GET или POST для генерации токена - PullRequest
0 голосов
/ 09 июня 2018

У нас есть конечная точка «RESTful», которая возвращает вновь созданный токен хранилища.Вся информация, необходимая для генерации токена, содержится в токене-носителе, поэтому для запроса тела не требуется.Запрос не вызывает изменения базы данных, потому что токен не сохраняется.Последующий запрос без какого-либо промежуточного изменения базы данных предоставляет другой токен в ответе.Какой правильный метод, POST или GET?

Одним из предложений является GET и GET / id, где id - это идентификатор ресурса, используемого в процессе создания токена, а не самого токена.Альтернативой является POST.

Так как в результате получается пиво, я постараюсь не слишком склоняться в сторону.Ресурсы, такие как правила GET и POST от IETF и обсуждение двух методов на https://restfulapi.net/http-methods/#get, были недостаточными для убеждения любой из сторон, отчасти из-за различий вуместно ли для GET возвращать что-то другое, если базовый ресурс не изменился между запросами, и является ли «генерируемый нами случайный токен» новым «ресурсом», если он не хранится в базе данных.

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Вы должны использовать POST для генерации токена.

GET используется для извлечения набора существующих ресурсов или определенного ресурса, идентифицированного с помощью предоставленного параметра пути.

В этом случае вы фактически не генерируете ресурс на сервере ввсе.Вы не храните никаких данных, и вам нечего будет извлечь позже.Так что нет REpresentational State Transfer .

Однако, поскольку создаваемый вами токен будет отличаться при каждом вызове (заявки iat и exp, при условии, что вы используете JWT) и не должен кэшироваться каким-либо посредником.HTTP-агенты будут обрабатывать POST запросы как неидемпотентные, что делает его лучшим выбором для конечной точки выдачи токена.

См. Также, например, Конечная точка OAuth2 мандат POST.

0 голосов
/ 09 июня 2018

REST - это не спецификация, это архитектурный стиль.Методы HTTP имеют очень специфическое значение.RESTful означает, в частности, что ресурсы должны быть созданы методом POST и возвращать URL-адрес созданного ресурса.

Какой правильный метод, POST или GET?

Этолегко ответить.Если вы хотите, чтобы ваш сервис был RESTful, он должен быть POST.

Но задайте себе также вопросы, на которые намного сложнее ответить:

  • Если этот сервис будетRESTful в нашем конкретном случае?
  • Какие преимущества и недостатки мы получим, если сделаем эту услугу не RESTful?(Без отдыха? :))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...