Если бы вы зашли в книжный магазин и попросили человека за прилавком достать «Лучшие 100 тортов» с полки, а книги не было в наличии, они вернулись бы и вежливо сказали бы: «Извините, я могу» найти эту книгу ". Автоматизируйте это в системе поиска книг, и она выдаст 404.
Менеджер книжного магазина не появится, вместо того, чтобы искать вашу книгу и сказать вам: «Боюсь, мы не поддерживаем искать эту конкретную книгу, поскольку наши сотрудники могут искать только те книги, которые у нас есть "(501).
Если вы зайдете в книжный магазин и попросите человека за прилавком достать вам газонокосилку, они вежливо ответят:" Я извините, я не знаю, как это сделать ". Это будет 501. Если бы вы попросили человека в книжном магазине избавиться от книги, которую вы только что видели на полке, это тоже было бы 501.
А 404 - это «хорошо, Я знаю, как это получить, но его там нет ". 501 - это «WTF! Что вы думаете об этом месте?».
Постоянный ли 404, зависит от того, что отвечает на вопрос. Если это API REST, он может вернуть статус JSON, говорящий о том, что что-то вроде книги отсутствует, но находится в заказе, с вероятной датой истечения.
Реальная причина - 501 при попытке получить Книжный человек, чтобы выкинуть книгу, которую они имеют на полке, если бы они просто сказали 404, вы бы просто сказали: «Вот оно!». Им нужно будет указать истинную причину, по которой они не могли этого сделать. У них нет бизнес-политики, которая позволяет им выбрасывать случайные книги, не покупая их.
Таким образом, технически аппарат есть, они могут подойти к книге, взять ее, но остановиться на 501 в качестве политики не был реализован.
"хорошо, я знаю, как превратить URL-адрес REST в функциональность, вот откуда я знаю, какую функциональность вы хотите, но эй, мы имеем дело только с людьми, 501".