Согласно: http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/ мы должны проконсультироваться с https://github.com/philsturgeon/codeigniter-restserver/blob/master/application/libraries/REST_Controller.php#L544, чтобы увидеть, что этот метод:
/**
* Detect method
*
* Detect which method (POST, PUT, GET, DELETE) is being used
*
* @return string
*/
protected function _detect_method() {
$method = strtolower($this->input->server('REQUEST_METHOD'));
if ($this->config->item('enable_emulate_request')) {
if ($this->input->post('_method')) {
$method = strtolower($this->input->post('_method'));
} else if ($this->input->server('HTTP_X_HTTP_METHOD_OVERRIDE')) {
$method = strtolower($this->input->server('HTTP_X_HTTP_METHOD_OVERRIDE'));
}
}
if (in_array($method, array('get', 'delete', 'post', 'put'))) {
return $method;
}
return 'get';
}
проверяет, определен ли мы заголовок HTTP HTTP_X_HTTP_METHOD_OVERRIDE
и он использует это в пользу фактического глагола, который мы реализовали в сети.Чтобы использовать это в запросе, вы должны указать заголовок X-HTTP-Method-Override: method
(т. Е. X-HTTP-Method-Override: put
) для генерации переопределения пользовательского метода.Иногда фреймворк ожидает X-HTTP-Method
вместо X-HTTP-Method-Override
, поэтому это зависит от фреймворка.
Если вы выполняете такой запрос через jQuery, вы интегрируете этот чанк в ваш запрос ajax:
beforeSend: function (XMLHttpRequest) {
//Specify the HTTP method DELETE to perform a delete operation.
XMLHttpRequest.setRequestHeader("X-HTTP-Method-Override", "DELETE");
}