Как отправить запрос DELETE в фил осетровых - codeigniter-restserver
Как говорится в названии, я использую Codeigniter с платформой phil sturgeon - codeigniter-restserver.
Я следил за учебником по Nettus, и все работает отлично, за исключением отправки запроса DELETE.
код:
<?php
require(APPPATH.'libraries/REST_Controller.php');
class Client extends REST_Controller{
function user_get()
{
$data = array('returned:'=> $this->get('id'));
$this->response($data);
}
function user_post()
{
$data = array('returned:'=> $this->post('id'));
$this->response($data);
}
function user_put()
{
$data = array('returned:'=> $this->put('id'));
$this->response($data);
}
function user_delete()
{
$data = array('returned from delete:'=> $this->delete('id'));
$this->response($data);
}
}
Я использую FF Addon, называемый HTTP Resource test, для отправки запроса, но когда я отправляю запрос DELETE с этим URL-адресом: http://localhost/api/client/user/id/1
, я получаю { "return from delete:": false}
В качестве дополнительной заметки: я нашел этот пост и используя заголовок "X-HTTP-Method-Override" и отправил его как почтовый запрос я смог получить идентификатор, но я предпочитаю, чтобы клиент не добавлял этот заголовок.
Ответы
Ответ 1
В соответствии с параметром HTTP DELETE невозможно отправить параметры. У него могут быть вещи в URL-адресе, поэтому вы можете изменить это на:
public function user_delete($id)
{
$this->response(array(
'returned from delete:' => $id,
));
}
Ответ 2
У меня была такая же проблема для этой работы для меня
1 → в REST_Controller.php замените функцию _parse_delete() по умолчанию:
protected function _parse_delete()
{
$this->_delete_args = $_DELETE;
$this->request->format and $this->request->body = file_get_contents('php://input');
// Set up out DELETE variables (which shouldn't really exist, but sssh!)
parse_str(file_get_contents('php://input'), $this->_delete_args);
}
Это все! больше не нужно "user_delete ($id)" "