CodeIgniterRestServer中put请求获取不到参数的问题解决_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了CodeIgniterRestServer中put请求获取不到参数的问题解决_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1881字,纯文字阅读大概需要3分钟。
内容图文
![CodeIgniterRestServer中put请求获取不到参数的问题解决_PHP教程](/upload/InfoBanner/zyjiaocheng/190/4bb0a1900bb0434f82e3d8d87e8109c6.jpg)
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); }客户端访问的时候正常传参数在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 这个设置无关。
http://www.bkjia.com/PHPjc/1088531.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1088531.htmlTechArticleCodeIgniter RestServer中put请求获取不到参数的问题解决 最近用restserver遇到个蛋疼的问题,发现$this-put得到的参数都是null。查了一下发现,这貌...
内容总结
以上是互联网集市为您收集整理的CodeIgniterRestServer中put请求获取不到参数的问题解决_PHP教程全部内容,希望文章能够帮你解决CodeIgniterRestServer中put请求获取不到参数的问题解决_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。