Я встречаю следующий случай: У меня есть API, который позволяет мне получить уникальный ресурс:
GET myapi/resource_id
Если этот ресурс не существует, я возвращаю код состояния HTTP 404.
Этот API также позволяет получить несколько ресурсов с помощью одного и того же запроса:
GET myapi/resource_id1,resource_id2
Какой код состояния HTTP я должен отправить обратно, если один из двух ресурсов не существует?
200 with an explanation in the JSON in an error key
206 which allows to be more explicit with an explanation in the JSON in an error key
400 / 404 code but this is not fine because the API still returns one of the two information
another solution?
Спасибо за помощь.
Хотя может показаться отличной идеей группировать несколько ресурсов с помощью одного запроса, вы теряете свойство использования кеша для отдельных ресурсов и в конечном итоге также получаете непригодное для использования значение ETag для этого «пакетного ресурса». HTTP явно не предназначен для такой стратегии. На самом деле затратно открывать соединение для каждого запроса, но, поскольку сейчас многие клиенты поддерживают Connection: keep-alive отправку нескольких запросов через одно и то же соединение, это не проблема. Протокол HTTP гарантирует получение сообщений в правильном порядке.
Я возвращаю код 404 для уникального извлечения, но я не знаю, какой код мне нужно использовать для многократного извлечения.





Я думаю, что здесь есть 2 варианта.
206 — для запросов диапазона, 400 — для искаженных запросов, поэтому ни один из них здесь не применим.
Вы возвращаете код 404 или он возвращается автоматически.