API REST: запрашивать тело как данные JSON или plain POST?

В настоящее время я создаю 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. На самом деле интересно, почему я бы выбрал это.

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

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

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

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

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

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

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

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