Подтвердить что ты не робот

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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