目录 搜索
基础 安装ThinkPHP5.1 开发规范 目录结构 配置基础 架构 路由 控制器 请求 架构总览 入口文件 URL访问 模块设计 命名空间 容器和依赖注入 Facade 钩子和行为 路由定义 变量规则 路由地址 闭包支持 路由参数 跨域请求 注解路由 路由分组 MISS路由 资源路由 快捷路由 路由别名 路由绑定 域名路由 URL生成 控制器定义 前置操作 跳转和重定向 空操作和空控制器 分层控制器 资源控制器 请求对象 输入变量 请求类型 HTTP头信息 伪静态 参数绑定 请求缓存 响应 响应输出 响应参数 重定向 数据库 模型 视图 连接数据库 查询数据 添加数据 更新数据 删除数据 查询表达式 链式操作 where table alias field strict limit page order group having join union distinct lock cache comment fetchSql force partition failException sequence 聚合查询 时间查询 高级查询 视图查询 JSON字段 子查询 原生查询 查询事件 事务操作 监听SQL 存储过程 数据集 分布式数据库 定义 新增 更新 删除 查询 JSON数据字段 获取器 修改器 自动时间戳 只读字段 软删除 类型转换 数据完成 查询范围 模型输出 事件 关联 一对一关联 一对多关联 远程一对多 多对多关联 多态关联 关联预载入 关联统计 关联输出 视图渲染 视图赋值 视图过滤 模板引擎 模板 变量输出 使用函数 运算符 原样输出 模板注释 模板布局 模板继承 包含文件 输出替换 标签库 内置标签 循环标签 比较标签 条件判断 资源文件加载 标签嵌套 原生PHP 定义标签 错误和日志 异常处理 日志处理 调试 验证 杂项 命令行 扩展库 安全和性能 附录 调试模式 性能调试 SQL调试 变量调试 远程调试 验证器 验证规则 错误信息 验证场景 路由验证 内置规则 独立验证 静态调用 表单令牌 缓存 Session Cookie 多语言 分页 上传 自动生成目录结构 创建类库文件 生成类库映射文件 清除缓存文件 生成配置缓存文件 生成数据表字段缓存 生成路由映射缓存 自定义指令 验证码 图像处理 Time 数据库迁移工具 Workerman MongoDb 单元测试 安全建议 优化建议 助手函数 升级指导 更新日志
文字

Response对象提供了一系列方法用于设置响应参数,包括设置输出内容、状态码及header信息等,并且支持链式调用以及多次调用。

设置数据

Response基类提供了data方法用于设置响应数据。

response()->data($data);
json()->data($data);

不过需要注意的是data方法设置的只是原始数据,并不一定是最终的输出数据,最终的响应输出数据是会根据当前的Response响应类型做自动转换的,例如:

json()->data($data);

最终的输出数据就是json_encode($data)转换后的数据。

如果要获取当前响应对象实例的实际输出数据可以使用getContent方法。

设置状态码

Response基类提供了code方法用于设置响应数据,但大部分情况一般我们是直接在调用助手函数的时候直接传入状态码,例如:

json($data,201);
view($data,401);

或者在后面链式调用code方法是等效的:

json($data)->code(201);

除了redirect函数的默认返回状态码是302之外,其它方法没有指定状态码都是返回200状态码。

如果要获取当前响应对象实例的状态码的值,可以使用getCode方法。

设置头信息

可以使用Response类的header设置响应的头信息

json($data)->code(201)->header(['Cache-control' => 'no-cache,must-revalidate']);

header方法支持两种方式设置,如果传入数组,则表示批量设置,如果传入两个参数,第一个参数表示头信息名,第二个参数表示头信息的值,例如:

// 单个设置
header('Cache-control', 'no-cache,must-revalidate');
// 批量设置
header([
    'Cache-control' => 'no-cache,must-revalidate',
    'Last-Modified' => gmdate('D, d M Y H:i:s') . ' GMT',
]);

除了header方法之外,Response基类还提供了常用头信息的快捷设置方法:

_ZQ@T(}9H9[H0@9NK}JK9DV.png

除非你要清楚自己在做什么,否则不要随便更改这些头信息,每个Response子类都有默认的contentType信息,一般无需设置。

你可以使用getHeader方法获取当前响应对象实例的头信息。

设置额外参数

有些时候,响应输出需要设置一些额外的参数,例如:
在进行json输出的时候需要设置json_encode方法的额外参数,jsonp输出的时候需要设置jsonp_handler等参数,这些都可以使用options方法来进行处理,例如:

json($data)
    ->options('json_encode_param',JSON_PRETTY_PRINT);

也可以支持传入数组作为参数:

jsonp($data)
    ->options([
        'var_jsonp_handler'     => 'callback',
        'default_jsonp_handler' => 'jsonpReturn',
        'json_encode_param'     => JSON_PRETTY_PRINT,
    ]);

自定义响应

如果需要特别的自定义响应输出,可以自定义一个Response子类,并且在控制器的操作方法中直接返回。又或者通过设置响应参数的方式进行响应设置输出。


上一篇: 下一篇: