Как создать отношение ссылки для конечной точки POST? - PullRequest
1 голос
/ 05 декабря 2011

При создании RESTful API моего веб-сервиса я пытаюсь дать клиентам отношения ссылок , например (это то, что возвращает точка входа GET):

<doc>
 <links>
  <link rel="self" href="/home"/>
  <link rel="post" href="/post-new-article"/>
 </links>
</doc>

Я ожидаю, что клиент поймет, что для публикации новой статьи он должен отправить запрос POST на /post-new-article с "text" в качестве параметра запроса.

Но я ничего не сказал о "POST" в документе, и я не сказал ему, какой параметр HTTP-запроса я ожидаю.Как и где я должен предоставить эту информацию?Есть ли де-факто стандарт / соглашение об этом?

1 Ответ

2 голосов
/ 23 декабря 2011

Технически правильный ответ заключается в том, что он определяется типом носителя документа.Например, предположим, что API обслуживает HTML.И клиент является браузером.

По соглашению, когда пользовательский агент (браузер) посещает ресурс (идентифицируемый тегом привязки), он выдает HTTP GET на сервер, обслуживающий API.Предполагая, что все идет по плану, сервер возвращает другое HTML-представление этого ресурса.

Аналогично, когда пользовательский агент отправляет форму, он выдает HTTP GET по умолчанию, если только атрибут method атрибута *Тег 1008 * указывает, что он должен POST данные.(Подробности здесь .)

В вашей документации API должен быть подробно указан тип носителя, используемый вашей службой REST.Если это пользовательский тип, то в спецификации должны быть указаны правила для следующих ссылок.Если ваш API работает по HTTP, тогда в правилах будут указаны GET, POST, DELETE и т. Д., А также любые другие требования / соглашения.

От самого Роя: http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

...