Проблема разработки REST API - PullRequest
       0

Проблема разработки REST API

0 голосов
/ 30 августа 2018

Я вызываю REST API для получения списка ресурсов и получаю ответ json, как показано ниже, если есть хотя бы один ресурс.

{
"value": [
    "res1_id",
    "res2_id",
    "res3_id"
]
}

и код ответа HTTP - 200.

Но когда ресурсов нет, сервер возвращает код ответа HTTP как 404. Я сомневаюсь, почему он так разработан (это корпоративный продукт). Я ожидал пустой список, как показано ниже, и HTTP-код ответа 200:

{
"value": []
}

Я не могу понять, какое проектное решение было принято, чтобы вернуть 404 вместо пустого json. Пожалуйста, помогите мне понять причины этого.

Ответы [ 4 ]

0 голосов
/ 05 ноября 2018

Вы пытаетесь получить доступ к ресурсу, который не существует. Вот причина 404.

Как говорит простой поиск в Google

Сообщение об ошибке HTTP 404, 404 Not Found и 404 - это гипертекст Стандартный код ответа протокола передачи данных (HTTP) в компьютерной сети сообщения, чтобы указать, что клиент был в состоянии общаться с данным сервером, но сервер не может найти то, что было запрошено.

Для вашего случая

{
"value": []
}

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

0 голосов
/ 30 августа 2018

Код состояния 404 является правильным ответом, когда нет ресурса для возврата на основании запроса, который вы сделали. Вы запросили данные, а данных нет. Возвращает пустой ответ. Они полагаются на то, что вы основываете свою интерпретацию результатов на коде состояния.

https://en.wikipedia.org/wiki/HTTP_404

0 голосов
/ 05 ноября 2018

Я читаю здесь, что у вас есть ресурс 'collection'. Этот ресурс коллекции содержит список подресурсов.

Для этого случая есть две возможные интерпретации.

  1. Ресурс коллекции имеет длину 0
  2. Ресурс коллекции не существует.

Большинство API будут рассматривать коллекцию 0 длины как ресурс, который все еще существует, с 200 OK. Пустая кофейная чашка - все еще кофейная чашка. Сама кофейная чашка не исчезла после того, как исчезла последняя капля.

Есть случаи, когда для ресурса коллекции может быть желательно 404. Например, если вы хотите указать, что коллекция никогда не существовала или никогда не создавалась.

Один из способов думать об этом - это разница между пустым каталогом или каталогом, который не существует. Оба случая могут «сказать» разработчику что-то еще.

0 голосов
/ 30 августа 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...