2016-12-24 2 views
0

В моей заявке есть маршрут /users/37/verify_email. Поскольку действие для этого маршрута обновляется активация информация в базе данных Я прошу клиента выполнить этот запрос с помощью метода PUT.Можно ли перенаправить методы `PUT`,` DELETE`?

В приложении на бэкэнде есть много шагов для проверки. После проверки успеха перенаправить клиент к следующему шагу с 302 Found с небольшим хаком:

Location: /users/37/verify_email?_method=PUT 

Это выглядит некрасиво немного для меня.

Это нормально, чтобы сделать такое перенаправление?

UPD

Я следовать REST и когда я хочу, чтобы удалить ресурс сгенерировать следующую ссылку на странице администратора:

<a href="https://stackoverflow.com/users/37?_method=DELETE">Delete</a> 
<a href="https://stackoverflow.com/users/37"    >View </a> 

Если в браузере есть будет:

GET /users/37?_method=DELETE 
GET /users/37 

При выполнении application/json будет:

DELETE /users/37 
GET /users/37 

Но я не уверен, что это ОК, чтобы поместить такие маршруты в Location заголовок:

Location: /users/37?_method=DELETE 

Я нигде не могу найти этот синтаксис:

Location: DELETE /users/37 
+1

Почему вам нужен '_method' в запросе? Я имею в виду, вы должны проверить, какой метод был использован напрямую, а не из параметра запроса ... –

+0

@ PavelŠtěrba обновленный вопрос –

ответ

0

Ну, вы не можете выполните REST в HTML-формах, потому что вы ограничены только для метода GET and POST.

Просто создайте URL-адрес /users/37/delete, сделайте всю свою проверку здесь и удалите его с успехом. Если вы хотите иметь REST API, сохраните его отдельно с интерфейсом JSON, потому что вы очень ограничены здесь HTML.

Кроме того, очень опасно выполнять проверку на одном URL-адресе и перенаправить его на URL-адрес, который удаляет сам. Что делать, если ваш пользователь узнает, какой URL-адрес удаляет материал? Он может пропустить проверку.

Рассмотрите возможность использования микросервисов или просто позвоните по API из внутреннего кода (API может работать только в вашей интрасети и будет доступен только из бэкэнд, а не извне).

Смежные вопросы