Различение инфраструктуры и бизнес-логики при использовании кодов состояния HTTP
Мы пытаемся создать интерфейс REST, который позволяет пользователям проверять наличие определенного ресурса. Предположим, мы продаем доменные имена: пользователь должен определить, доступен ли домен.
HTTPGET
в сочетании с200
а также404
Коды ответов на первый взгляд кажутся разумными.
Проблема, с которой мы сталкиваемся, заключается в различении запроса, успешно обслуживаемого нашей службой поиска, и запроса, обслуживаемого в исключительном режиме другими компонентами. Например:
404
а также200
могут быть возвращены посредниками, которые фактически блокируют запрос. Это может быть связано с неправильной настройкой прокси-сервера или даже с внешней инфраструктурой, такой как Wifi в кафе, использующей плохую аутентификацию на основе форм.
Клиенты могут использовать неработающие URL. Это может произойти из-за устаревания или (снова) из-за неправильной конфигурации. Мы могли бы бороться с первым через301
, тем не мение.
Какова текущая лучшая практика для различения между ответами, которые были успешно выполнены против намерения клиента для этого запроса, и ответами, обслуживаемыми посредством исключительного поведения?
Проблема устраняется путем туннелирования ответов через тело ответа, поскольку мы можем гарантировать, что они уникальны для нашего сервиса. Тем не менее, кажется, не очень приятно!