REST API: тело запроса в виде JSON или простых данных POST? - PullRequest
25 голосов
/ 19 марта 2012

Я сейчас создаю REST API.Все методы GET в настоящее время используют JSON в качестве формата ответа.Какова лучшая практика для операций POST и PUT?Использовать JSON в теле запроса или просто POST?Я ничего не могу найти по этому вопросу.

Я вижу, что Twitter использует POST, например: https://dev.twitter.com/docs/api/1/post/direct_messages/new

Каковы преимущества использования формата JSON?Контроллер API (который наполовину готов), полученный от github, ожидает JSON.Действительно интересно, почему я выбрал бы это.

Ответы [ 2 ]

49 голосов
/ 19 марта 2012

POST, PUT, GET являются HTTP-глаголами и сами по себе не указывают формат для передачи данных, поэтому отсутствует формат POST .Это означает, что вы можете кодировать данные любым способом по вашему выбору.

Теперь, какой формат вы решите использовать, действительно будет больше зависеть от того, как обычно будет использоваться ваш API.Если это будет в основном отправка формы, отправляемой из веб-браузера, то, вероятно, разумнее всего использовать кодировку полей формы, поскольку это облегчает это взаимодействие для клиента.

С другой стороны, если выв основном будут получать данные JSON от вызовов AJAX, тогда может иметь смысл получение формата JSON.Если вы сделаете оба, нет никаких причин, по которым вы не можете принимать данные в обоих форматах.

Другим аспектом, который необходимо учитывать, является сложность структур данных, которые вы будете передаватьназад и вперед.Кодирование формы (аналогично кодированию строки запроса) является структурой ключ-значение, в то время как JSON (или XML) допускает гораздо более богатую структуру данных.

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

Кроме того, последнее, что я упомяну, это то, что REST - это не только чистые URLили правильно использовать глаголы HTTP.Эти аспекты действительно просто глазурь на торте.Основная идея архитектуры REST заключается в том, что Гипертекст является движком состояния приложения .Просто следуя URL-адресам в ответах сервера, хороший клиент может узнать обо всех доступных действиях, и ему не нужно знать ничего, кроме базового URL-адреса.Все остальное можно узнать из этого.Соедините это с четко определенными типами контента, и вы получите мир, в котором множество клиентов могут общаться с множеством серверов, все говорят на одном и том же «языке», и клиентам не нужно знать что-нибудь о серверах(или наоборот), кроме базового URL и типов контента.Вот что такое REST.

5 голосов
/ 19 марта 2012

Это зависит от данных, которые вы хотите обменять.Если это сложная структура, вам нужно отправить ее структурированным способом (например, XML или JSON).В java веб-приложениях json более легкий, поэтому он предпочтительнее XML.

Если вы хотите отправить несколько полей из формы, можно использовать тип «application / x-www-urlformencoded».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...