7.ThinkPHP响应

Posted 余生随缘~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.ThinkPHP响应相关的知识,希望对你有一定的参考价值。

输出响应

大多数情况,我们不需要关注Response对象本身,只需要在控制器的操作方法中返回数据即可。

最简单的响应输出是直接在路由闭包或者控制器操作方法中返回一个字符串,例如:

Route::get(\'hello/:name\', function ($name) {
    return \'Hello,\' . $name . \'!\';
});
<?php
namespace app\\index\\controller;

class Index
{
    public function hello($name=\'thinkphp\')
    {
        return \'Hello,\' . $name . \'!\';
    }
}

json数据返回

方式一:修改配置文件

由于默认是输出html输出,所以直接以html页面方式输出响应内容,但也可以设置默认输出为json格式在config/app.php

\'default_return_type\'    => \'json\',

但是这种修改了之后,所有数据都是json,如果全是接口可以使用这种方式

方式二:json方法返回

格式:

return json($data,http状态码,请求头);
或者
return json($data)->code(201)->header([\'Content-Type\' => \'application/json\']);

例:

public function req3($id = 0){
    $data = [\'status\' => 1000, \'msg\' => \'添加成功\'];
    return json($data,201,[\'username\' => \'admin\', \'password\' => \'admin8888\']);
}

image-20200524153850964

重定向

我们有success 和error跳转但是这两种跳转都会有一个提示3秒的,不想要那个怎么办?

可以使用redirect助手函数进行重定向

redirect(\'地址或方法名\',数组参数)

例:

<?php
namespace app\\index\\controller;

class Index
{
    //请求

    public function req3($id = 0){
        return $id;
    }

    public function resp($id = 0){
        return redirect(url(\'req3\',[\'id\' => 56]));
    }
}

image-20200524155636312

文件下载

5.1.21+版本开始,支持文件下载功能,可以更简单的读取文件进行下载操作,支持直接下载输出内容。

你可以在控制器的操作方法中添加如下代码:

    public function download()
    {
    	$download =  new \\think\\response\\Download(\'image.jpg\');
        return $download->name(\'my.jpg\');
        // 或者使用助手函数完成相同的功能
    	// download是系统封装的一个助手函数
        return download(\'image.jpg\', \'my.jpg\');
    }

访问download操作就会下载命名为my.jpg的图像文件。

下载文件的路径是服务器路径而不是URL路径,如果要下载的文件不存在,系统会抛出异常。

下载文件名可以省略后缀,会自动判断(后面的代码都以助手函数为例)

    public function download()
    {
    	// 和上面的下载文件名是一样的效果
        return download(\'image.jpg\', \'my\');
    }

如果需要设置文件下载的有效期,可以使用

    public function download()
    {
    	// 设置300秒有效期
        return download(\'image.jpg\', \'my\')->expire(300);
    }

除了expire方法外,还支持下面的方法:

方法 描述
name 命名下载文件
expire 下载有效期
isContent 是否为内容下载
mimeType 设置文件的mimeType类型

助手函数提供了内容下载的参数,如果需要直接下载内容,可以在第三个参数传入true

    public function download()
    {
        $data = \'这是一个测试文件\';
        return download($data, \'test.txt\', true);
    }

以上是关于7.ThinkPHP响应的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法

恢复片段后android地图停止响应

Android Studio片段没有响应后按按钮

html 将以编程方式附加外部脚本文件的javascript代码片段,并按顺序排列。用于响应式网站,其中ma

如何从片段中的 JSON 响应中的对象获取数据