Я работаю с REST API, который находится на сервере, который обрабатывает данные для множества устройств IoT.
Моя задача - выполнить запрос к серверу с помощью API для сбора конкретной информации о производительности указанных устройств.
В одном случае я получаю список доступных устройств и их соответствующие идентификаторы, а затем опрашиваю сервер для получения более подробной информации, используя эти идентификаторы (GUID).
Сервер возвращает 500 Internal Server Error
запрос для одного из этих идентификаторов. В моем приложении выдается исключение, и я не вижу подробностей об ошибке. Если я рассмотрю ответ более подробно с почтальоном , я вижу, что сервер вернул JSON в теле, которое содержит:
errorMessage: "This ID does not exist"
,
Не обращайте внимания на тот факт, что сервер предоставил идентификатор для начала - это отдельная проблема для разработчика.
Должен ли REST API возвращать a, 500 Internal Server Error
чтобы сообщить, что запрос ссылается на несуществующий объект? На мой взгляд, коды ответов HTTP должны строго относиться к состоянию вызова REST, а не к внутренней механике API. Я ожидаю получить 200 OK
ответ с ошибкой и описанием, которые будут принадлежать данному API.
Мне приходит в голову, что есть потенциальная разница в ожидании в зависимости от того, как структурирован вызов REST.
Рассмотрим эти примеры:
http://example.com/restapi/deviceinfo?id=123
http://example.com/restapi/device/123/info
В первом случае идентификатор устройства передается как переменная GET. 404 или 500 будет означать, что path ( /restapi/deviceinfo
) либо не найден, либо привел к ошибке сервера.
Во втором случае идентификатор устройства является частью URL. Я бы лучше понял 404 Not Found
, но все же мог бы поспорить, исходя из того, какие части пути интерпретируются как переменные по сравнению с конечными точками.