2014-09-07 3 views
0

По какой-то причине я, похоже, не могу вызвать методы DELETE через Restler. В моем файле PHP restler я определил метод следующим образом:Методы DELETE, которые не могут быть вызваны

/** 
    * Drop invitation 
    * 
    * Removes an invitation from the system. Coaches want a way to be able 
    * to remove an invite if they messed up, or the person just doesn't accept. 
    * 
    * @param string $email The email address of the invited person {@from body} 
    * @param int $team_id The SQL identifier for the team {@from body} 
    * 
    * @return array An empty array 
    */ 
    public function deleteInvite($email, $team_id) { 
      return []; 
    } 

Когда я пытаюсь вызвать его:

curl -X DELETE -H "Content-Type: application/json" -d '{"email":"foo","team_id",17}' http://server.com/app/team/invite

Он возвращается с ошибкой 400:

{ "error": { "code": 400, "message": "Bad Request: email is missing." } }

Как я должен это назвать?

ответ

0

как общепринятый запрет практики не поддерживает/считывает параметры тела для GET и DELETE запросов. Отправьте их по URL-адресу или в качестве строки запроса.

Как вы можете видеть в http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-26#section-4.3

  • РУКОВОДИТЕЛЯ - Нет определенных семантики тела.
  • GET - Определенная семантика тела.
  • PUT - Тело поддерживается.
  • POST - Тело поддерживается.
  • DELETE - Определенная семантика тела.
  • TRACE - Корпус не поддерживается.
  • ОПЦИИ - Тело поддерживается, но без семантики (возможно, в будущем).

Многие серверы HTTP не разобрать тело GET и DELETE запросов, restler следит за этой практикой

+1

Спасибо. Почему это «лучшая практика»? – Gargoyle

Смежные вопросы