Должен ли я использовать метод GET или POST REST API? - PullRequest
0 голосов
/ 02 июля 2019

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

Должен ли я использовать GET и POST метод?

Примечание: Я не хочу делать несколько запросов GET для каждого идентификатора книги.

POST, похоже, сбивает с толку, поскольку предполагается, что он будет использоваться только тогда, когда запрос создает ресурс или изменяет состояние сервера.

Ответы [ 3 ]

1 голос
/ 02 июля 2019

Я хочу получить данные о куче ресурсов. Скажем, Массив идентификатора книги, и ответом является JSON Массив объектов книги.

Если вы думаете о передаче массива идентификатора книги в качестве тела сообщения HTTP-запроса, то GET - это плохая идея .

Полезная нагрузка в сообщении запроса GET не имеет определенной семантики; отправка тела полезной нагрузки по запросу GET может привести к тому, что некоторые существующие реализации отклонят запрос.

Вы должны использовать вместо POST

POST, кажется, сбивает с толку, поскольку предполагается, что он будет использоваться только тогда, когда запрос создает ресурс или изменяет состояние сервера.

Это не совсем верно. POST может использоваться для чего угодно - см. GraphQL или SOAP . Но с помощью POST вы отказываетесь от способности промежуточных компонентов участвовать в беседе.

Например, для случаев, которые эффективно доступны только для чтения, вы хотели бы использовать безопасный метод, поскольку он позволяет оптимизировать предварительное кэширование и автоматически повторять потерянные ответы в ненадежной сети. POST не имеет дополнительных семантических ограничений, поэтому вы проигрываете.

HTTP действительно хочет, чтобы вы GET использовали URI; это можно сделать одним из двух относительно простых способов:

1) Разместите идентификаторы на сервере, чтобы создать новый ресурс (это означает, что сервер сохраняет для себя копию списка идентификаторов) и получить новый идентификатор ресурса в обмен. Затем получите этот новый идентификатор в любое время, когда захотите узнать текущее представление результатов.

2) Кодируйте необходимую информацию в сам URI. Чаще всего это делается с помощью части запроса URI, хотя это не является строго обязательным. Недостатком здесь является то, что если представление массива идентификаторов в кодировке URI очень длинное, у вас могут возникнуть проблемы с некоторыми реализациями, которые обеспечивают произвольные ограничения URI.

Не всегда хорошие ответы:

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

0 голосов
/ 02 июля 2019

вы собираетесь использовать GET-запрос и поместить ваши данные запроса (массив идентификатора книги) в раздел данных вашего запроса AJAX (или что вы собираетесь использовать). См. Как передать параметры в запросах GET с помощью jQuery

0 голосов
/ 02 июля 2019

Если я правильно понимаю, вы хотите получить список всех элементов в списке, одним нажатием.Это было бы возможно при использовании GET, так как REST возвращает JSON, по умолчанию он может содержать до 100 элементов, и вы можете получить больше элементов, если необходимо, указав $ top.

До обратной записи или на сервер, POST будет то, что вы ищете, это, насколько я понимаю, должно быть один на один.

...