CodeIgniter RestServer中put请求获取不到参数的问题解决_PHP教程
Jul 12, 2016 am 09:01 AMCodeIgniter 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); }
$data = $this->getPut(array('tel', 'name', 'addr'));
补充:当把参数放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 这个设置无关。

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Win11 시스템에서 중국어 언어 팩을 설치할 수 없는 문제에 대한 해결 방법

Black Shark 휴대폰이 켜지지 않는 문제를 해결하는 방법을 알려주는 5가지 팁!

Xiaohongshu에 게시할 때 사진이 자동으로 저장되는 문제를 해결하는 방법은 무엇입니까? 포스팅 시 자동으로 저장되는 이미지는 어디에 있나요?

이 장치에 드라이버를 로드할 수 없습니다. 어떻게 해결합니까? (개인적으로 테스트되었으며 유효함)

중국어 데이터를 Oracle로 가져올 때 문자가 깨지는 문제를 해결하는 방법은 무엇입니까?
