CodeIgniter RestServer中put请求获取不到參数的问题解决
近期用restserver遇到个蛋疼的问题,发现$this->put得到的參数都是null。查了一下发现。这貌似这个普遍问题,參见链接:https://github.com/chriskacerguis/codeigniter-restserver/issues/362
还是先来看下官方的解释:參见 http://code.tutsplus.com/tutorials/working-with-restful-services-in-codeigniter-2--net-8814
$this->put() Reads in PUT arguments set in the HTTP headers or via cURL.
即该函数能够读取通过cURL訪问时携带的put參数,或者在http headers里的參数。
可是经过測试,即便參数放headers里。$this->put()也訪问不到,其根本原因可能是在源代码上某个地方给屏蔽了。
杂家临时也没找到解决的根本方法,但下面两种能够临时解决这个问题:
1。与post保持一致,仍然在body里传參数。
在基类里写个函数:
public function getPut($key){
return $this->input->input_stream($key);
}
client訪问的时候正常传參数在body里。就ok了。注意此时通过$this->post()是得不到參数的。必须从input_stream里取。上述函数支持多字段同一时候取,如:
$data = $this->getPut(array('tel', 'name', 'addr'));
事实上CI里从input出来的函数应该都支持多字段同一时候取,但Restserver的this->get() post()却不支持。
补充:当把參数放body里时。直接用$this->put()就能够获得到相应字段了,文档说是在headers,实际是在body里!但$this->put()不支持多字段,故上述函数还是有意义的。
$this->delete()也有这个问题,读不到headers里的參数,但能读到body里的!
!!
2。參数在header里传,基类里写个函数:
/**
* 获得key相应的header
* @param $key
* @return mixed
*/
public function getHeader($key){
return $this->input->get_request_header($key, TRUE);
}
个人推荐第一种哈。參数在body里传!
能依照http规矩来最好,header里不要烂用。
ps:restserver里put获得不到參数的问题跟Content-Type:application/json 这个设置无关。
------欢迎大家增加PHP CodeIgniter社区群:460132647
CodeIgniter RestServer中put请求获取不到參数的问题解决的更多相关文章
- 关于HttpClient模拟浏览器请求的參数乱码问题解决方式
转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44407297 http://www.llwjy.com/blogdetail/9 ...
- 获取Oracle隐含參数信息
Oracle数据库的初始化參数.主要来源于两个Oracle内部数据字典表:X$KSPPCV和X$KSPPI通常我们查询的V$Parameter视图或使用show parameter命令都是就来源于这两 ...
- .NET CORE API 使用Postman中Post请求获取不到传参问题
开发中遇到个坑 记录下. 使用Postman请求core api 接口时,按之前的使用方法(form-data , x-www-form-urlencoded)怎么设置都无法访问. 最后采用raw写入 ...
- ajax请求获取的数据无法赋值给全局变量问题总结
一.总结: 1.问题描述: 今天做项目遇到在用表单显示详细信息的过程中ajax请求获取的数据无法赋值给全局变量的情况,从列表页面进入详情页,在详情页面被渲染了之后就会调用js文件里的接口向服务器请求数 ...
- C++ 中获取 可变形參函数中的參数
#include <iostream> #include <stdarg.h> using namespace std; int ArgFunc(const char * st ...
- jQuery.ajax()方法中參数具体解析
前言 在项目开发中,为了实现异步向服务端发起请求,最常常使用的就是jQuery.ajax方法了.刚開始需求比較简单,调用jQuery.ajax方法时要传的參数也就那几个常见的參数:url/data/d ...
- Ngnix中的fastcgi參数性能优化和解释
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/luozhonghua2014/article/details/37737823 优化性能參数设置,在 ...
- C中參数个数可变的函数
一.什么是可变參数 我们在C语言编程中有时会遇到一些參数个数可变的函数,比如printf()函数,其函数原型为: int printf( const char* format, ...); 它除了有一 ...
- springMVC --@RequestParam注解(后台控制器获取參数)
在SpringMVC后台控制层获取參数的方式主要有两种,一种是request.getParameter("name"),第二种是用注解@RequestParam直接获取. 1.获取 ...
随机推荐
- CAD嵌套打印(网页版)
当用户需要打印两个CAD控件的图纸时,可以采用嵌套打印实现.点击此处在线演示. 实现嵌套打印功能,首先将两个CAD控件放入网页中,js代码如下: <p align="center&qu ...
- 输入和输出(IO流)
File类的常用方法: File对象的创建和部分方法使用: File file =new File("file\\我是文本.txt"); System.out.println(&q ...
- vue之Render函数
(1)什么是Render函数 先来看一个场景,在博客网中,一般有一级标题.二级标题.三级标题...,为了方便分享url,它们都做成了锚点,点击后,会将内容加载网址后面,以#分隔. 例如‘特性’是一个& ...
- JavaSE-06 二维数组
学习要点 二维数组的定义 二维数组内存数据结构 不规则二维数组 二维数组的定义 语法格式 格式一 数据类型[][] 数组名 = new 数据类型[m][n]; m:表示这个二维数组有多少个一维数组. ...
- 常见的Redis问题?
Redis的那些最常见面试问题[转] 1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据 ...
- pip各种
pip: 一个现代的,通用的 Python 包管理工具.提供了对Python 包的查找.下载.安装.卸载的功能. windows:自带pip,直接使用. Linux:执行下面命令即可完成安装. # w ...
- AD转换器的主要指标
AD转换器的主要指标如下: (1)分辨率(Resolution).指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与2n的比值.分辨率又称精度,通常以数字信号的位数来表示.定义满刻度于2^n的比 ...
- 2017 计蒜之道 初赛 第一场 B阿里天池的新任务(简单)
题链:"https://nanti.jisuanke.com/t/15500" 本来希望通过找循环节然后套KMP来通过后面题的,可是只过了B题,可能循环节不一定是存在的. #inc ...
- 【判断二分图】C. Catch
https://www.bnuoj.com/v3/contest_show.php?cid=9154#problem/C [题意] 给定一个无向图,给定小偷的起始位置 从这个起始位置开始,小偷可以在单 ...
- hdu 2642二维树状数组 单点更新区间查询 模板题
二维树状数组 单点更新区间查询 模板 从零开始借鉴http://www.2cto.com/kf/201307/227488.html #include<stdio.h> #include& ...