REST: Сопоставление 404 кодов статуса HTTP

Наша команда разрабатывает приложения RESTFul... мы обсуждаем подход "ЛУЧШАЯ ПРАКТИКА".

Должен ли возвращаться ответ кода состояния 404 для фильтра-подобного запроса? Скажем, мой URL-адрес GET

.../1 ​​/услуги/StartsWith/a.json

и он возвращает все значения, начинающиеся с A в моей базе данных... но если не найдены значения "a", я должен просто вернуть код состояния 200 с пустой json-строкой? или код состояния 404.

Спасибо!

Ответ 1

См. этот вопрос, в обновлении моего ответа я адресую вашу проблему. В частности, этот бит,

Я думаю, что ответ на вопрос: return 404 зависит от того, что ресурс, который извлекается. Является это представление поиска результат, или это представление продукт? Чтобы это знать, вам действительно нужно посмотреть на связь, которая привела нас к URL.

Если URL-адрес должен возвращать Представление продукта затем 404 должен быть возвращен, если код не существует. Если URL-адрес возвращает поиск результат не должен возвращать 404.

Конечным результатом является то, что URL похоже, не является определяющим фактор. Сказав это, соглашение о том, что строки запроса используются для возврата результатов поиска, чтобы больше интуитивно понятный стиль этого URL-адреса когда вы не хотите возвращать 404s.

Ответ 2

Возможно, более разумно вернуть код 204, что означает "Нет содержимого". Это было бы немного более эффективно, так как статус 204 не может иметь никакого содержимого документа, плюс вы можете обнаружить код вместо того, чтобы анализировать ответ.