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

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

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

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

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

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

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

Как лучше доработать данный функционал?
  • Вопрос задан
  • 324 просмотра
Решения вопроса 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). Пока через неделю при мердже совсем другой ветки репозитория не запустили автотесты, которые этот баг показали.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы