RESTful API design - ответные http коды - PullRequest
0 голосов
/ 08 января 2019

Мне нужно 2 действия, используя POST.

VerifyCerts не обязательные параметры. В бэкэнде он проверяет правильность двух файлов (загруженных ранее). Что я должен вернуть в случае ошибки? Я имею в виду, должен ли быть http статус кода 4xx или 200 и информация об ошибке в содержимом?

ApllyCerts также не требуются параметры. Он пытается применить уже загруженные файлы сертификата. Какой код 4xx я должен вернуть в случае ошибки (неверные файлы)? А что должно быть в ответном теле?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

VerifyCerts не обязательные параметры. В бэкэнде он проверяет правильность двух файлов (загруженных ранее). Что я должен вернуть в случае ошибки? Я имею в виду, это должен быть http код состояния 4xx или 200 и информация об ошибке в содержимом?

Помните, что HTTP ничего не знает о "действиях". Он знает о ресурсах и представлениях ресурсов. Но детали реализации намеренно скрыты.

Здесь, похоже, у вас есть ресурс, и представление этого ресурса рассчитывается на основе данных, которые были сохранены на сервере. Поэтому я ожидаю, что этот ответ будет сопровождаться кодом 2xx, даже если в настоящее время эти 2 файла являются «недействительными».

(Нет проблем с запросом, нет проблем с сервером, вы просто документируете, что состояние мира в настоящее время не соответствует счастливому пути).

ApllyCerts также не требует параметров. Он пытается применить уже загруженные файлы сертификата. Какой код 4xx я должен вернуть в случае ошибки (неверные файлы)? А что должно быть в теле ответа?

Тело ответа является легкой частью -

За исключением случаев ответа на запрос HEAD, сервер ДОЛЖЕН отправить представление, содержащее объяснение ситуации с ошибкой, а также является ли это временным или постоянным условием.

Код ответа сложнее. Я думаю, что вы можете привести разумные аргументы в пользу 403 Forbidden и 409 Conflict ; по сути, запрос клиента является попыткой перевести ресурс из состояния A в состояние B, но на самом деле ресурс в настоящее время находится в состоянии Z, которое не имеет перехода в состояние B.

На практике я не думаю, что это имеет большое значение - ни один из этих кодов ответов не может быть кэширован по умолчанию, у общих потребителей нет особой причины по-разному обрабатывать этот код и так далее. Различие в семантическом значении не имеет никакого практического эффекта, который я вижу.

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

0 голосов
/ 08 января 2019

Поскольку эти параметры не нужны, это означает, что для верификации и ApplyCerts ввод не требуется, ошибка должна составлять 500

HTTP-статус 500 Тело ответа (JSON или текст) { Error_Code: "FileNOtFound" .. и т.д. }

...