Соответствует RESTful, используя только POST - PullRequest
0 голосов
/ 18 сентября 2018

до сих пор я использую только метод POST для создания веб-сервисов (не для веб-сайтов).Я подумал, что это более безопасный и лучший способ, если это не для веб-сайта, потому что параметры не сохраняются в журналах веб-сервера при отправке сенсорных данных.

Теперь я не уверен, если этоRESTful-совместимый и лучший способ.Мое текущее определение выглядит примерно так:

POST https://{url}/order/getOrder
Content-Type: application/json
{
  "orderId": "42"
}

Обычно GET-запрос будет

GET https://{url}/order/42

или

GET https://{url}/order/getOrder
Content-Type = application/json
{ "orderId"     : 42 }

. Может возникнуть вопрос: все ли примеры RESTful?или только последние два.

с наилучшими пожеланиями jd

1 Ответ

0 голосов
/ 18 сентября 2018

Теперь я не уверен, что это RESTful-совместимый и лучший способ

Технически, я полагаю, нет. Ограничения кэширования - это проблема первого класса в архитектурном стиле REST

Ограничения кэширования требуют, чтобы данные в ответе на запрос были неявно или явно помечены как кэшируемые или не кэшируемые..

В спецификации HTTP POST явно указан как кэшируемый метод .Однако спецификация аннулирования кэша требует, чтобы ответ без ошибок на запрос POST делал недействительными ранее кэшированные записи для эффективного URI запроса.

То есть для запросов, которые обычно равны В любом случае, для обеспечения безопасности операций вы должны использовать GET или HEAD.

Таким образом, из перечисленных вами вариантов подход "REST-совместимый" будет

GET https://{url}/order/42

.Третий вариант дает сбой по другой причине:

Полезная нагрузка в сообщении запроса GET не имеет определенной семантики

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

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