Я реализую API, пытаясь придерживаться Restful дизайна. У нас есть сценарий использования для принятия запроса POST, создания ресурса и возврата URL-адреса клиенту. Клиент захочет применить некоторую бизнес-логику, которая определяет, должен ли ресурс извлекаться из этого URL или нет. Мне кажется естественным, что код возврата должен быть 303, как указано в RFC 7231:
Пользовательский агент может выполнить запрос поиска, направленный на этот URI (запрос GET или HEAD, если используется HTTP), который также может быть перенаправлен, и представить конечный результат в качестве ответа на исходный запрос
Однако коллега не согласен и предлагает ответ 200, так как от клиента не требуется следовать перенаправлению, чтобы получить ресурс - это его дело. RFC заявляет
Если предусмотрено поле заголовка Location (раздел 7.1.2),
Пользовательский агент МОЖЕТ автоматически перенаправить свой запрос на URI
на которое ссылается значение поля Location, даже если конкретный статус
Код не понят. Автоматическое перенаправление должно быть сделано с
заботиться о методах, которые, как известно, не безопасны, как определено в разделе 4.2.1,
поскольку пользователь может не захотеть перенаправить небезопасный запрос
Я прочитал это, чтобы сказать, что ответ на перенаправление оставляет решение о том, перенаправлять или нет, клиенту. Мой коллега утверждает, что, поскольку браузеры и клиенты автоматически перенаправляют, нам не следует указывать им это делать. Это правильно?