2012-04-11 4 views
0

Я создаю API для веб-сервиса, и я спрашивал себя. Представьте себе, что в качестве вызова API для создания нового проекта, например, /api/project/create.json, он перенаправляет (с 302 Redirect) на вновь созданный проект, скажем /api/project/123.json. Если первый запрос отправляется через POST, где указано, что второй URI должен быть восстановлен с помощью GET?Требуется ли перенаправление 302 для запроса GET?

Есть ли какой-либо RFC, который заявляет, что с перенаправлением всегда следует следовать GET? Или это действительное поведение клиента, чтобы просто изменить URL-адрес и отправить тот же запрос POST еще раз на новый URL-адрес?

Представьте, что у меня есть старый сервер API и новый сервер API, и я хотел перенаправить клиентов POST-Request на новый URL-адрес API. Что мне нужно сделать?

ответ

1

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

Нигде не было.

Есть ли какой-либо RFC, который заявляет, что с перенаправлением всегда следует следовать GET? Или это действительное поведение клиента, чтобы просто изменить URL-адрес и отправить тот же запрос POST еще раз на новый URL-адрес?

Нет, на самом деле RFC (RFC 2616) указывает, что изменение имени метода на 301 и 302 неверно.

См. Также http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-19.html#status.3xx для получения дополнительной информации.

Представьте, что у меня есть старый сервер API и новый сервер API, и я хотел перенаправить клиентов POST-Request на новый URL-адрес API. Что мне нужно сделать?

Я бы порекомендовал использовать код состояния 307 (потому что вокруг этого меньше ошибок браузера).