REST API — статус HTTP для частичного ответа

Я встречаю следующий случай: У меня есть API, который позволяет мне получить уникальный ресурс:

GET myapi/resource_id

Если этот ресурс не существует, я возвращаю код состояния HTTP 404.

Этот API также позволяет получить несколько ресурсов с помощью одного и того же запроса:

GET myapi/resource_id1,resource_id2

Какой код состояния HTTP я должен отправить обратно, если один из двух ресурсов не существует?

  1. 200 with an explanation in the JSON in an error key

  2. 206 which allows to be more explicit with an explanation in the JSON in an error key

  3. 400 / 404 code but this is not fine because the API still returns one of the two information

  4. another solution?

Спасибо за помощь.

Вы возвращаете код 404 или он возвращается автоматически.

Md Riadul Islam 13.02.2019 16:57

Хотя может показаться отличной идеей группировать несколько ресурсов с помощью одного запроса, вы теряете свойство использования кеша для отдельных ресурсов и в конечном итоге также получаете непригодное для использования значение ETag для этого «пакетного ресурса». HTTP явно не предназначен для такой стратегии. На самом деле затратно открывать соединение для каждого запроса, но, поскольку сейчас многие клиенты поддерживают Connection: keep-alive отправку нескольких запросов через одно и то же соединение, это не проблема. Протокол HTTP гарантирует получение сообщений в правильном порядке.

Roman Vottner 13.02.2019 16:57

Я возвращаю код 404 для уникального извлечения, но я не знаю, какой код мне нужно использовать для многократного извлечения.

JCDUS 13.02.2019 17:50
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как создать простое погодное приложение на Python с API OpenWeatherMap
Как создать простое погодное приложение на Python с API OpenWeatherMap
Этот учебник проведет вас через процесс создания простого погодного приложения с помощью Python и OpenWeatherMap API.
Пакеты Java
Пакеты Java
Пакет java - это группа классов, интерфейсов и подпакетов схожего типа. Думайте об этом как о папке в каталоге файлов. Мы используем пакеты, чтобы...
Как использовать API парсинга квитанций с помощью JavaScript за 5 минут?
Как использовать API парсинга квитанций с помощью JavaScript за 5 минут?
В этом руководстве вы узнаете, как использовать API парсинга квитанций за 5 минут с помощью JavaScript. Eden AI предоставляет простой и удобный для...
0
3
603
1

Ответы 1

Я думаю, что здесь есть 2 варианта.

  • Отправьте обратно 200 и даже не упоминайте о недостающем ресурсе.
  • Отправить обратно 404 с пустым телом.

206 — для запросов диапазона, 400 — для искаженных запросов, поэтому ни один из них здесь не применим.

Другие вопросы по теме