REST и может удалить / обновить и т. Д. Действия - PullRequest
0 голосов
/ 07 декабря 2018

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

Я пытаюсь найти правильный шаблон дляиспользовать для этого в REST, и я иду немного ниже.Я мог бы создать параллельный API, чтобы для каждой конечной точки сущности была конечная точка EntityPermissions, но это кажется излишним.Я также мог бы сделать что-то вроде добавления HTTP-заголовка, который указывает, что запрос был только для проверки разрешений, а не для его выполнения, но это кажется немного сомнительным и может испортить кеш http.

Может кто-нибудь указатьменя к общей схеме для того, чтобы сделать что-то подобноеУ него есть имя?Или веб-страница, которая обсуждает это?Я уверен, что у каждого есть свои идеи на этот счет (например, мои глупые идеи), но мне кажется, что это достаточно распространенное требование, которое, как я полагаю, должно быть для этого общим.Но Google не сильно помог.

1 Ответ

0 голосов
/ 08 декабря 2018

Будет много мнений по этому поводу.Я поделюсь своим.Это может быть не лучшим решением для вашей проблемы, но это правильные решения.

Если вы следовали настоящему определению REST, вы бы создали веб-сервис в стиле гипермедиа / HATEOAS.URL не будут жестко закодированы, они будут обнаружены, а действия будут обнаружены при наличии ссылки.

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

Популярный формат для гипермедиа API - HAL .Вы могли бы украсить ссылки далее с помощью дополнительной информации из подсказок HTTP Link .

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

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