ThinkPHP 请求与响应
请求对象
请求对象调用
1、控制器构造方法注入
2、控制器操作方法注入(无论是否继承系统的控制器基类,都可以使用操作方法注入)
3、Facade调用
4、助手函数request
请求信息
Request对象支持获取当前的请求信息,包括:
方法 | 含义 |
---|---|
host | 当前访问域名或者IP |
scheme | 当前访问协议 |
port | 当前访问的端口 |
remotePort | 当前请求的REMOTE_PORT |
protocol | 当前请求的SERVER_PROTOCOL |
contentType | 当前请求的CONTENT_TYPE |
domain | 当前包含协议的域名 |
subDomain | 当前访问的子域名 |
panDomain | 当前访问的泛域名 |
rootDomain | 当前访问的根域名(V5.1.6+) |
url | 当前完整URL |
baseUrl | 当前URL(不含QUERY_STRING) |
query | 当前请求的QUERY_STRING参数 |
baseFile | 当前执行的文件 |
root | URL访问根地址 |
rootUrl | URL访问根目录 |
pathinfo | 当前请求URL的pathinfo信息(含URL后缀) |
path | 请求URL的pathinfo信息(不含URL后缀) |
ext | 当前URL的访问后缀 |
time | 获取当前请求的时间 |
type | 当前请求的资源类型 |
method | 当前请求类型 |
输入变量
-
检测变量是否设置
$request->has('id','post');
-
变量获取
变量获取的格式:变量类型方法('变量名/变量修饰符','默认值','过滤方法')
最常用的获取变量类型方法如下:
方法 | 描述 |
---|---|
param | 获取当前请求的变量 |
get | 获取 $_GET 变量 |
post | 获取 $_POST 变量 |
param方法会把当前请求类型的参数和路由变量以及GET请求合并,并且路由变量是优先的
获取请求类型
在很多情况下面,我们需要判断当前操作的请求类型是GET、POST、PUT、DELETE或者HEAD,一方面可以针对请求类型作出不同的逻辑处理,另外一方面有些情况下面需要验证安全性,过滤不安全的请求
用途 | 方法 |
---|---|
获取当前请求类型 | method |
判断是否GET请求 | isGet |
判断是否POST请求 | isPost |
判断是否PUT请求 | isPut |
判断是否DELETE请求 | isDelete |
判断是否AJAX请求 | isAjax |
判断是否PJAX请求 | isPjax |
判断是否为JSON请求 | isJson(V5.1.38+) |
判断是否手机访问 | isMobile |
判断是否HEAD请求 | isHead |
判断是否PATCH请求 | isPatch |
判断是否OPTIONS请求 | isOptions |
判断是否为CLI执行 | isCli |
判断是否为CGI模式 | isCgi |
HTTP头信息
$header = $request->header();
$agent = $request->header('user-agent');
伪静态
URL伪静态通常是为了满足更好的SEO效果,ThinkPHP支持伪静态URL设置,可以通过设置url_html_suffix
参数随意在URL的最后增加你想要的静态后缀,而不会影响当前操作的正常执行
'url_html_suffix' => 'shtml'
'url_html_suffix' => '' //支持所有的静态后缀访问
'url_html_suffix' => 'html|shtml|xml' // 多个伪静态后缀设置 用|分割
'url_html_suffix' => false,// 关闭伪静态后缀访问
如果要获取当前的伪静态后缀,可以使用Request对象的ext方法。
$ext = $request->ext();
响应
大多数情况,我们不需要关注Response对象本身,只需要在控制器的操作方法中返回数据即可
如果修改配置文件,设置:'default_return_type' => 'json'
则访问的输出结果就变成了JSON字符串
- 响应输出类型
为了规范和清晰起见,最佳的方式是在控制器最后明确输出类型(毕竟一个确定的请求是有明确的响应输出类型),默认支持的输出类型包括:
输出类型 | 快捷方法 | 对应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 |
附件下载(V5.1.21+) | download | \think\response\Download |
-
响应参数
1、data设置响应数据
2、code设置状态码
3、header设置头信息(支持批量)
4、options设置额外参数 -
重定向
redirect助手函数重定向以及传参:redirect('hello',['name'=>'thinkphp']);
本作品采用《CC 协议》,转载必须注明作者和本文链接