Какой глагол REST HTTP использовать для сценария «Вопросы и ответы»? - PullRequest
0 голосов
/ 24 июня 2019

Система аутентификации, над которой я работаю, имеет новую функцию:

1. Система авторизации позволяет пользователям указывать проверяющие стороны, с которыми они заключают сделки,

2. Проверяющая сторона может утвердить / отклонить / возможно запрос (авторизацию) - возможно, вызывает перенаправление на веб-сайт RP для дальнейших вопросов авторизации RP.

RP должен внедрить веб-сервис, указанный Системой аутентификации, для выполнения запроса на утверждение / отклонение / может генерировать систему аутентификации.

Моя проблема в том, как это выглядит как служба REST. Поскольку система аутентификации не может действительно определять стиль URI для системы RP, я хотел бы указать, что путь не содержит никаких параметров, системе аутентификации просто нужно знать URI службы. Данные запроса (имя пользователя / идентификатор) могут быть в виде json в теле запроса (предполагая, что HTTP-глагол POST. GET может быть в порядке, но не хочет показывать идентификаторы пользователей в URI). Система аутентификации не заботится о том, что RP делает с данными запроса, система аутентификации просто хочет получить ответ «да / нет / может быть» (поэтому на самом деле это может не быть парадигмой GET / POST / PATCH / DELETE / etc).

Какой глагол лучше всего использовать? и как облегчить ответ; на самом деле это не ответ на запрос об успешном / неудачном выполнении, так как на запрос есть 3 возможных результата. Допустимо ли возвращать некоторый json с ответом (тогда какой глагол http использовать)?

Я немного сбит с толку этим. GET кажется наиболее очевидным

GET /api/user_link_authorize/{userid}

кроме того, что я вынужден поместить идентификаторы пользователя в URI (что я не хочу делать) ...

Есть предложения?

1 Ответ

0 голосов
/ 24 июня 2019

Моя проблема в том, как это выглядит как служба REST.

Подумайте, как бы выглядел веб-сайт.

Вы бы начали с некоторого известного URI в вашем списке закладок. Выборка этой страницы даст вам представление формы, которая будет иметь элементы управления вводом, которые описывают, какие данные должны быть предоставлены (и, возможно, включают значения по умолчанию). Клиент предоставляет данные, о которых он знает, и отправляет форму. Данные в форме используются для создания HTTP-запроса, как описано в правилах обработки форм HTML. Ответ на этот запрос включает представление ответа или, возможно, следующую часть работы, которую необходимо выполнить.

Это ОТДЫХ .

Получение формы (через URI с закладкой) будет, конечно, GET; мы просто обновляем нашу локально кэшированную копию представления «текущий» форм. Отправка формы может быть GET или POST; нам не обязательно знать это заранее, потому что эта информация передается в представлении самой формы.

GET против POST включает ряд компромиссов. Семантически, GET является безопасным , это означает, что ресурс может быть выбран в любое время, что пауки могут его сканировать, что доступ к ресурсу таким образом является "бесплатным". Это здорово, когда ресурс свободен, потому что клиенты в ненадежной сети могут автоматически повторить запрос, если ответ потерян. С другой стороны, объявление миру о том, что запрос безопасен, когда на самом деле получение ответов является дорогостоящим, не является выигрышной игрой.

Кроме того, GET не поддерживает тело сообщения (точнее, полезная нагрузка не имеет определенной семантики). Это означает, что информация, предоставляемая клиентом, должна быть частью самого идентификатора целевого ресурса. Если вы имеете дело с конфиденциальной информацией, это может быть проблематично - не обязательно при передаче (вы можете использовать защищенный сокет), но, безусловно, при проверке того, чтобы URI с конфиденциальной информацией не регистрировался там, где могут быть утечки конфиденциальные данные.

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

Учитывая, что вы не хотите использовать идентификатор пользователя в URI, это точка против GET, и поэтому в пользу POST.

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