При использовании вашего "затененного" не найденного подхода вы можете использовать 404 с телом ответа:
- использовать статус 404 с текстовыми данными («автор не найден», «работа не найдена»). Для большей гибкости языка вы можете использовать метки (например, error.author.notFound)
- использовать более структурированные и намного более простые для анализа "подкоды" (например, 10 означает, что автор не найден, 11 пользователь не найден).
Тем не менее, я НЕ рекомендую вышеупомянутые подкоды, они добавляют большую сложность и усилия по обслуживанию унифицированного интерфейса HTTP. По-разному структурируйте свою библиотеку api-клиента. Пусть это вызовет /author/adams/work/11
первым. Если он возвращает 404, тогда вызовите /author/adams/
next, чтобы узнать, не был ли пропавший автор причиной 404. Затем вы можете выбросить соответствующие исключения NotFound.
Другой альтернативой является разработка конечного API-клиента по-другому. Сначала он должен вызвать /author/adams
, затем, если не 404, продолжится /author/adams/work
. Естественно, само приложение идет по пути. Но это, конечно, работает, только если ваш поток страниц внутри внешнего интерфейса адаптируется к этой последовательности вызовов.