近期用restserver遇到個蛋疼的問題,發現$this->put獲得的參數都是null。查了一下發現。這貌似這個廣泛問題,參見連接:https://github.com/chriskacerguis/codeigniter-restserver/issues/362php
仍是先來看下官方的解釋:參見 http://code.tutsplus.com/tutorials/working-with-restful-services-in-codeigniter-2--net-8814git
$this->put()
Reads in PUT arguments set in the HTTP headers or via cURL.
但是通過測試,即使參數放headers裏。$this->put()也訪問不到,其根本緣由多是在源代碼上某個地方給屏蔽了。github
雜家臨時也沒找到解決的根本方法,但下面兩種可以臨時解決這個問題:json
1。與post保持一致,仍然在body裏傳參數。restful
在基類裏寫個函數:app
public function getPut($key){
return $this->input->input_stream($key);
}
$data = $this->getPut(array('tel', 'name', 'addr'));
事實上CI裏從input出來的函數應該都支持多字段同一時候取,但Restserver的this->get() post()卻不支持。補充:當把參數放body裏時。直接用$this->put()就可以得到到相應字段了,文檔說是在headers,實際是在body裏!但$this->put()不支持多字段,故上述函數仍是有意義的。函數
$this->delete()也有這個問題,讀不到headers裏的參數,但能讀到body裏的!codeigniter
!!post
2。參數在header裏傳,基類裏寫個函數:ui
/**
* 得到key相應的header
* @param $key
* @return mixed
*/
public function getHeader($key){
return $this->input->get_request_header($key, TRUE);
}
能依照http規矩來最好,header裏不要爛用。
ps:restserver裏put得到不到參數的問題跟Content-Type:application/json 這個設置無關。
------歡迎你們增長PHP CodeIgniter社區羣:460132647