Прежде всего, позвольте мне подчеркнуть, что коды состояния предназначены для указания результата попытки сервера понять и удовлетворить запрос клиента.
Если все идет хорошо, тогда яreturn 200
и идентификатор изображения.
Кажется, все в порядке, но я бы посоветовал вам вернуть 201
вместе с заголовком Location
,Цитируя RFC 7231 относительно метода POST
:
Если на исходном сервере был создан один или несколько ресурсов в результате успешной обработки запроса POST
,исходный сервер ДОЛЖЕН отправить ответ 201
(Создан), содержащий поле заголовка Location
, которое предоставляет идентификатор для созданного первичного ресурса и представление, которое описывает состояние запроса при обращении к новому ресурсу (-ам).
Наряду с 201
заголовок Location
предназначен для указания местоположения вновь созданного ресурса.Если заголовок Location
не предоставлен, клиент должен предположить, что ресурс идентифицирован по действующему URI запроса:
6.3.2.201 Создан
Код состояния 201
(Создан) указывает, что запрос был выполнен и привел к созданию одного или нескольких новых ресурсов.Основной ресурс, созданный запросом, идентифицируется либо полем заголовка Location
в ответе, либо, если поле Location
не получено, эффективным URI запроса.[...]
Ошибка клиента
Может ли клиент выполнить новый запрос и устранить проблему?Если это так, выберите код состояния в диапазоне 4xx
:
6.5.Ошибка клиента 4xx
Класс состояния кода 4xx
(ошибка клиента) указывает на то, что клиент, похоже, допустил ошибку.За исключением ответа на запрос HEAD
, сервер ДОЛЖЕН отправить представление, содержащее объяснение ситуации с ошибкой, а также является ли это временным или постоянным условием.Эти коды состояния применимы к любому методу запроса.
Майкл Кропат собрал очень полезный набор блок-схем , которые могут дать вам некоторые идеи.Чтобы определить наиболее подходящий код состояния 4xx
, см. Следующую таблицу:
![Choosing a 4xx status code](https://i.stack.imgur.com/IEMI4.png)
Вот некоторые допустимые параметры, в зависимости от причины ошибки:
6.5.11.413 Слишком большая полезная нагрузка
Код состояния 413
(Слишком большая полезная нагрузка) указывает, что сервер отказывается обрабатывать запрос, поскольку полезная нагрузка запроса больше, чем сервер хочет или можетобрабатывать.[...]
6.5.13.415 Неподдерживаемый тип носителя
Код состояния 415
(Неподдерживаемый тип носителя) указывает, что исходный сервер отказывается обслуживать запрос, поскольку полезная нагрузка находится в формате, не поддерживаемом этим методомна целевом ресурсе.Проблема с форматированием может быть связана с указанием в запросе Content-Type
или Content-Encoding
или из-за прямой проверки данных.
6.5.1.400 Bad Request
Код состояния 400
(Bad Request) указывает, что сервер не может или не будет обрабатывать запрос из-за того, что воспринимается как ошибка клиента (например,неправильный синтаксис запроса, неверное формирование сообщения запроса или обманчивая маршрутизация запроса).
Ошибка сервера
Если ошибка была вызвана сервером, то код состояния в5xx
диапазон будет точным:
6,6.Ошибка сервера 5xx
Класс состояния кода 5xx
(Ошибка сервера) указывает, что сервер знает, что он допустил ошибку или не может выполнить запрошенный метод. За исключением ответа на запрос HEAD
, сервер ДОЛЖЕН отправить представление, содержащее объяснение ситуации с ошибкой, а также является ли это временным или постоянным условием.
См. Следующую блок-схему:
![Choosing a 5xx status code](https://i.stack.imgur.com/CnbPj.png)
Я бы предложил 500
:
6.6.1. 500 Внутренняя ошибка сервера
Код состояния 500
(Внутренняя ошибка сервера) указывает, что сервер обнаружил непредвиденное состояние, которое не позволило ему выполнить запрос.