首页 > 编程知识 正文

手机应用request请求压缩,request请求的数据为空

时间:2023-05-04 20:04:00 阅读:267251 作者:3906

swoft request请求 获取 request 对象通过控制方法参数注入的方式通过请求上下文获取获取请求数据获取请求 method获取请求的 uri获取请求 headers获取 get 数据获取 post 数据获取 get & post 数据获取上传文件其它的方法

获取 request 对象 通过控制方法参数注入的方式 <?php declare(strict_types=1); namespace appHttpController; use SwoftHttpMessageRequest; class TestController{ public function create(Request $request) { } } 通过请求上下文获取 <?php declare(strict_types=1); namespace appHttpController; use SwoftContextContext; class TestController{ protected $request; public function __construct(){ $this->request = Context::mustGet()->getRequest(); } public function create() { $params = $this->request->input(); //TODO SOMETHING } } 获取请求数据

在介绍获取请求数据之前,我们先看一下源码,文件路径为 vendor/swoft/http-message/src/Request.php

class Request extends PsrRequest implements ServerRequestInterface { use InteractsWithInput; . . . }

可见 Request 类继承了 PsrRequest 类,实现了 ServerRequestInterface 接口,并引用了 InteractsWithInput trait。

获取请求 method $method = $request->getMethod(); 获取请求的 uri $uri = $request->getUri();//该方法返回的是对象,是对象,是对象 $scheme = $uri->getScheme(); $authority = $uri->getAuthority(); $userInfo = $uri->getUserInfo(); $host = $uri->getHost(); $port = $uri->getPort(); $path = $uri->getPath(); $query = $uri->getQuery(); $fragment = $uri->getFragment(); 获取请求 headers // 获取全部header $headers = $request->getHeaders();// 获取单个header $host = $headers = $request->getHeader('host'); //返回值是array $host = $request->getHeaderLine("host");//返回值是字符串 $headers = $request->getHeaders();foreach ($headers as $name => $values) { echo $name . ": " . implode(", ", $values).PHP_EOL;} 获取 get 数据 $data = $request->query(); $some = $request->query('key', 'default value') //推荐使用get $data = $request->get(); $some = $request->get('key','default value'); 获取 post 数据 $data = $request->post(); $some = $request->post('key', 'default value') 获取 get & post 数据 $data = $request->input(); $some = $request->input('key', 'default value') 获取上传文件 $file = $request->getUploadedFiles();//获取的结果是一维数组或者二位数组 //数组内容是 SwoftHttpMessageUploadUploadedFile 文件对象,对象,对象 /** *文件操作方法 moveTo() 将上传的文件移动到新位置。 getSize() 获取文件大小,单位 byte。 getError() 获取上传文件相关的错误信息,若无错将必须返回UPLOAD_ERR_OK 常量,若又错误将返回UPLOAD_ERR_XXX 相关常量。 getClientFilename() 获取文件上传时客户端本地的文件名,不要相信此方法返回的值。客户端可能会发送恶意虚假文件名,意图破坏或破解您的应用程序。 getClientMediaType() 获取客户端中文件的 MediaType 类型,不要相信此方法返回的值。客户端可能会发送恶意虚假文件名,意图破坏或破解您的应用程序。 */获取的结果是一维数组或者二位数组,数据结构如下。 若表单中上传的是单文件则返回的是一个一维数组,数组内容是 SwoftHttpMessageUploadUploadedFile 文件对象,例如文件字段名为 file 则数据结构如下array(1) { ["file"]=> object(SwoftHttpMessageUploadUploadedFile)#6510 (7) { ["size":"SwoftHttpMessageUploadUploadedFile":private]=> int(1319) ["errorCode":"SwoftHttpMessageUploadUploadedFile":private]=> int(0) ["file":"SwoftHttpMessageUploadUploadedFile":private]=> string(25) "/tmp/swoole.upfile.f7p2EL" ["clientFilename":"SwoftHttpMessageUploadUploadedFile":private]=> string(6) "at.png" ["clientMediaType":"SwoftHttpMessageUploadUploadedFile":private]=> string(9) "image/png" ["moved":"SwoftHttpMessageUploadUploadedFile":private]=> NULL ["path":"SwoftHttpMessageUploadUploadedFile":private]=> NULL }}若表单中是一个字段数组上传多个文件如 file[] 则返回的是一个二维数组,数组内容依然是 SwoftHttpMessageUploadUploadedFile 文件对象,数据结构如下array(1) { ["file"]=> array(2) { [0]=> object(SwoftHttpMessageUploadUploadedFile)#6516 (7) { ["size":"SwoftHttpMessageUploadUploadedFile":private]=> int(1319) ["errorCode":"SwoftHttpMessageUploadUploadedFile":private]=> int(0) ["file":"SwoftHttpMessageUploadUploadedFile":private]=> string(25) "/tmp/swoole.upfile.TVKdOS" ["clientFilename":"SwoftHttpMessageUploadUploadedFile":private]=> string(6) "at.png" ["clientMediaType":"SwoftHttpMessageUploadUploadedFile":private]=> string(9) "image/png" ["moved":"SwoftHttpMessageUploadUploadedFile":private]=> NULL ["path":"SwoftHttpMessageUploadUploadedFile":private]=> NULL } ... }} 其它的方法 if ($request->isAjax()) { // Do something}if ($request->isXmlHttpRequest()) { // Do something}if ($request->isGet()) { // Do something}if ($request->isPost()) { // Do something}if ($request->isPut()) { // Do something}if ($request->isDelete()) { // Do something}if ($request->isPatch()) { // Do something}$contentType = $request->getContentType();

swoft学习笔记之request请求

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。