够意思博客够意思博客够意思博客

EasySwoole之接收application/json请求参数

EasySwoole中获取内容类型为application/json的参数

js中使用ajax请求,设置header为

$.ajax({
    headers: {
        'Content-Type': 'application/json'  //multipart/form-data;boundary=--xxxxxxx application/x-www-form-urlencoded  application/json
    },
    method:'POST',
    url:data.field.url,
    dataType:'JSON',
    data:'{"tel":"13666666666","code":"1111"}',
    success:function(result){
        layer.alert(JSON.stringify(result));
    }
});


因为请求内容类型json格式,服务端通过$this->request()->getRequestParam()是无法获取到内容,只能通过$this->request()->getBody()->__toString()来获取ajax传过来的内容,此时获取的内容是json字符串,需要我们自己转换成数组json_decode

/**
   * 访问入口,做权限控制
*/
public function onRequest(?string $action): ?bool
{
  if (!parent::onRequest($action)) {
      return false;
  };
  $this->param = $this->request()->getRequestParam(); //接收请求参数
      if($this->request()->getHeader('content-type')[0]=='application/json'){ //根据内容类型来转换参数
          $json = $this->request()->getBody()->__toString();
          $json =$json?json_decode($json,1):[];
          $this->param = array_merge($json,$this->param);
      }
    $this->AjaxJson(0,[$this->request()->getRequestParam(),$this->request()->getBody()->__toString(),$this->param], 'OK'); return false;

}

请求结果

EasySwoole之接收application/json请求参数(图1)

根据上图可以发现json 通过$this->request()->getRequestParam()是无法获取到ajax传递过来的参数,只能通过$this->request()->getBody()->__toString()获取请求内容

本文为够意思原创文章,转载无需和我联系,但请注明来自够意思博客blog.go1s.cn:够意思博客 » EasySwoole之接收application/json请求参数

加载中~