Вдохновленный мыслью, глядя на вопрос "Правильный код статуса HTTP, когда ресурс доступен, но недоступен из-за разрешений", я буду использовать тот же сценарий для иллюстрируют мой гипотетический вопрос.
Представьте, что я создаю веб-сервис с автопомощи.
Предположим, что <
GET /api/persons/angela/location
извлекает текущую позицию пользователя "angela". Только сама ангелочка и потенциальный водитель, который собирается ее забрать, должны знать ее местоположение, поэтому, если запрос не аутентифицирован соответствующему пользователю, 401 Неавторизованный ответ.
Также рассмотрите запрос
GET /api/persons/john/location
когда пользователь не позвонил john в систему. Нет ресурса john, не говоря уже о ресурсе для местоположения john, поэтому это, очевидно, возвращает 404 Not Found. Или это?
Что делать, если я не хочу показывать, зарегистрирован ли john в системе?
(Возможно, имена пользователей взяты из небольшого пула университетских логинов, и в кампусе есть очень воинственная группа по велоспорту, которая принимает очень тусклый взгляд на использование автомобиля, даже если вы собираете пул? Они могут делать запросы по URL-адресу для каждого пользователя, и если они получают 401 вместо 404, сделайте вывод, что пользователь является автозагрузчиком)
Имеет ли смысл возвращать 401 Unauthorized для этого запроса, хотя ресурс не существует и нет возможного набора учетные данные, которые могут быть предоставлены в запросе, чтобы сервер возвращал 200?