响应(Response)对象用于动态响应客户端请求,控制发送给用户的信息。通常用于输出数据给客户端或者浏览器。 ThinkPHP5的 Response响应对象由 think\Response类或者子类完成,ThinkPHP的 App::run()方法的返回值是一个 Response对象实例,最终会调用 Response对象的 send方法完成输出。 自动输出 大多数情况,我们不需要关注Response对象本身,只需要在控制器的操作方法中返回数据即可,系统会根据default_return_type和default_ajax_return配置决定响应输出的类型。 默认的自动响应输出会自动判断是否AJAX请求,如果是的话会自动输出default_ajax_return配置的输出类型。 'thinkphp', 'status' => '1' ]; return $data; } } 由于默认是输出Html输出,所以访问页面输出结果为: 修改配置文件,添加: // 默认输出类型 'default_return_type' => 'json', 再次访问的输出结果为: 修改输出类型为xml: // 默认输出类型 'default_return_type' => 'xml', 则输出结果变成: 现在明白为什么控制器的操作方法中不要直接echo输出,而要使用return返回了。 手动输出 在必要的时候,可以手动控制输出类型和参数(也是建议的方式),这种方式较为灵活。 例如如果需要指定json输出类型,可以使用下面的方式: 'thinkphp', 'status' => '1' ]; return Response::create($data, 'json'); } } 或者直接使用系统提供的助手函数输出json: 'thinkphp', 'status' => '1' ]; return json($data); } } 使用助手函数不受配置参数设置的影响,页面输出的结果为: {"name":"thinkphp","status":"1"} 默认的情况下发送的http状态码是200,如果需要返回其它的状态码,可以使用: 'thinkphp', 'status' => '1' ]; return json($data, 201); } } 或者发送更多的响应头信息: 'thinkphp', 'status' => '1' ]; return json($data, 201, ['Cache-control' => 'no-cache,must-revalidate']); } } 也支持使用下面的链式调用的方式: 'thinkphp', 'status' => '1' ]; return json($data)->code(201)->header(['Cache-control' => 'no-cache,must-revalidate']); } } 默认支持的输出类型包括: 输出类型 快捷方法 对应Response类 HTML输出 response \think\Response 渲染模板输出 view \think\response\View JSON输出 json \think\response\Json JSONP输出 jsonp \think\response\Jsonp XML输出 xml \think\response\Xml 页面重定向 redirect \think\response\Redirect 所以,同样的可以使用 xml方法输出 XML数据类型: 'thinkphp', 'status' => '1' ]; return xml($data, 201); } } 如果你只需要输出一个html格式的内容,可以直接使用