Окрім відповіді @ Деріка.
URI - це ідентифікатори , тому ми маємо пам’ятати, що ( /a/{id}/b
це ідентифікатор). URI НЕ має сенсу для WWW, і тому для клієнта HTTP.
404 - правильна відповідь . По суті, сервер відповідає
Я не знайшов жодного ресурсу з таким ідентифікатором. Ресурс не знайдено
1
Будь-який ресурс відсутній - це батько чи дитина, не має значення.
Ми, розробники, бачимо ієрархії та шляхи в URI, але клієнти HTTP цього не роблять. Іншими словами, HTTP призначений для інтерпретації лише клієнтів HTTP, але не людьми (розробниками, кінцевими користувачами тощо).
У разі сумнівів не запитуйте, який код має сенс для вас (людини). Запитайте, який код має сенс для HTTP-клієнта. Як ви хочете, щоб поводився HTTP-клієнт?
Чому? Оскільки деякий код статусу змушує цих клієнтів виконувати певні операції. Наприклад, 302 . Цей код зазвичай змушує веб-браузери перенаправляти на певне місце (URI), повідомлене в заголовках відповідей.
Це може бути не вашим випадком, але важливо знати. Зрештою, коди статусу HTTP адресовані клієнтам HTTP. Не до наших додатків. Не для осіб.
1: 409 рідко реалізується як помилка навігації. Зазвичай це передбачає виконання віддалених операцій (видалення, оновлення, нові тощо). Але URI повинен існувати. Інакше переважатиме 404