Дизайн API - Дополнительное тело в запросе клиента - Код состояния, возвращаемый в случае сбоя проверки - PullRequest
0 голосов
/ 16 июня 2020

В нашем API одна из конечных точек будет ожидать, что клиенты предоставят тело / полезную нагрузку только в определенном сценарии.

Если API не может сгенерировать полезную нагрузку для данного запроса на основе происхождения клиента, тогда , мы хотим, чтобы наш API предоставлял клиенту ответ с правильным кодом состояния, чтобы он знал, что должен предоставить дополнительную информацию. Как только клиент выполнит запрос с телом / полезной нагрузкой, api обработает запрос как обычно.

Я просто хотел знать, есть ли какой-либо стандартный предопределенный код состояния или процедура для реализации такого типа конечной точки в дизайне API или мы должны просто отклонить запрос с каким-то настраиваемым кодом состояния, а затем попросить клиента реализовать logi c на основе специального кода?.

Спасибо,

Vinoth

1 Ответ

0 голосов
/ 19 июня 2020

Коды состояния HTTP не соответствуют и не предназначены для точного сопоставления с каждой реальной ошибкой. Они представляют категории ошибок.

Например, 404 означает, что ресурс не может быть найден, но если ваш путь - / customers / 11 / animals / 5, то есть несколько вещей, которые могут быть неправильными. тропинка. у покупателя 11 может не быть, например, животного 5, или может не быть покупателя 11. На запрос «животное не найдено» нет ответа http. Или ваш API может не иметь каких-либо вызовов с этим шаблоном URL для начала.

Вы должны вернуть код состояния, который представляет, какая у вас «категория» ошибки (в этом случае что-то не было найдено), а тело ответа должно содержать более подробную c подробную информацию об ошибке. Чтобы упростить задачу, я считаю полезным, если структура данных одинакова для успеха и ошибки (это значительно упрощает синтаксический анализ) с полем «данные», которое зависит от ответа.

Вот один пример:

status code: 404 not found
body: { 
    "messageDetailCode" :"CustomerNotFound", 
    "messageDetail" : "Customer not found", 
    "data" : null 
}

Дополнительная литература:

Какой код статуса HTTP должен возвращать служба REST API в случае ошибки проверки?

...