Как обработать GET-запрос на несуществующий элемент?

Я сделал небольшое rest-api.

На фронте мне нужно реализовать следующую логику:
- Формирую GET-запрос на получение элемента и БД по дате.
- Если элемент не найден, на фронте собираю необходимые данные для создания элемента
- После оплаты пользователем заказа отправляю POST-запрос на создание элемента.

То, что при такой логике можно насоздавать кучу элементов, понимаю. В этом нет проблемы, т.к. запрос на создание элемента отправляется только после успешной оплаты заказа.

Запрос делаю через Javascript.
Сейчас сделал так: я отправляю запрос, мне возвращается ошибка: "Элемент не найден, 404".
Далее эту ошибку обрабатываю, отправляю запрос на создание элемента.

Всё работает корректно, элемент создаётся, проблем нет. Но при этом в консоль разработчика на сайте выбрасывается та самая ошибка: "запрос не удался, элемент не найден 404".
Я самоучка, но, предполагаю, что в консоли на боевом сайте никогда не должны появляться ошибки. Так ли это?

Можно сделать доработку в самом API, чтобы при подобном запросе он отдавал другой ответ, который будет сигналом для следующих действия, а не ошибку. Но по REST-api концепции при GET-запросе должна выдаваться именно ошибка.

Как лучше доработать данный функционал?
  • Вопрос задан
  • 282 просмотра
Решения вопроса 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Не делайте этот запрос!

Если без шуток, то статус 404 вполне информативен и нормален, вы его можете перехватить и обработать.
Кроме того используйте списки. Например для календаря

GET /api/getEvents/12.02.2020 -> возвращает список событий 0..N и 200 статус
GET /api/getEvents/12.02.2020/1 -> событие номер 1
POST /api/getEvents/12.02.2020 создание события

И так далее
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Nexen2
@Nexen2
Web backend Yii2/Symfony Coder
Или сделать json-api, где будет возвращатся запись вида [status: error, message: "not found"].

Сделал я как то энпоинт /user/reset/{token} для сброса паролей у юзеров. Потом появился еще и сброс емейла, для тех кто потерял доступ к мылу или мыло забыл, появился ресет-пароль и ресет-емейл. А вот в клиенте изменить УРЛ я забыл. Что было дальше? Правильно, клиент думал что все путем, просто дурные клиенты всё день за днем неправильные токены подсовывают (которых нет а БД, 404). Пока через неделю при мердже совсем другой ветки репозитория не запустили автотесты, которые этот баг показали.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы