170 похожих чатов

Я считаю, что на запрос /api/v1/users?id=42 Нужно ответить, например: • 200 {ok:true, data:

{user:{…}}} когда такой юзер есть;
• 200 {error:true, code:'user_not_found'} когда юзера нету;
• 200 {error:true, code:'wrong_auth_cookie'} когда не была выполнена авторизация;
• 404 {error:true, code:'fatal_error', message:'Path /api/v1/users does not exists'} когда версия v1 уже не поддерживается или при любой другой опечатке в запросе (если он всё ещё в пределах /api/*);
• 400 {error:true, code:'fatal_error', message:'Parameter "user_id" is missing'} когда в запрос поданы некорректные параметры (но не их значения!).

То есть, на мой взгяд, код «200» обозначает, что запрос верный и API отработало верно (то есть сам СЕРВИС обслужил запрос), а коды 4xx обозначали бы только то, что API используется неправильно.
Туда же можно воткнуть проверки Content-Type и самого метод (get/post), может юзерагент чекнуть, чтобы поисковики случайно не заходили (им можно отдавать 403 например).

Такая ошибка на фронте обозначала бы ошибку в КОДЕ приложения, или факт того, что приложение нужно обновить/исправить (или сервис сейчас не работает – пусть возвращает 503 если у него база данных отвалилась, например).

Это идеально отделяет их от «отрицательных ответов» – когда нет объекта, нет прав на изменение, попытка сохранить некорректные данные – всё это _нормальные_ запросы к API, которые нормально отработали и вернули нормальный, просто отрицательный результат. Я наоборот не понимаю, с чего это они должны возвращать 404…

6 ответов

9 просмотров

Можно определять результат выполнения запроса разбирая только заголовки

Ну понимаешь, тебе сейчас скажут, что при получении 404 надо потом еще проверить тело ответа, в котором и детализировать, а где именно ошибка - т.е. по сути одна хрень, нужно парсить и читать тело ответа ;)

После такого беседовать не о чем более, удачи.

я как фронтенд разработчик, ноги бы таким проектировщикам апи поломал

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

Но ведь при твоём 400 апи все равно верно отрабатывает.

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

Обсуждают сегодня

какие клиентские датасеты в лазаре умеют объединяться в master-detail? нужно забрать на клиент запись из одной таблицы и выборку из другой связанной один-ко-многим, отредактир...
Igor
19
Подскажите, сейчас что то есть (JS модуль какой-нибудь), что можно использовать для: 1) переваривания javascript codа из html fileа, т.е. разбивки, на переменные, команды, бло...
Iar De
32
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Мне интересно, скорее людей здесь используют D, Rust, C/C++ для решения реальных прикладных задач за деньги?)
Evil Satanson
43
Делал сайт заказчику в 2018г. Прилетела претензия на фотку в примерах работ от copydefend (ооо "фортуна технолоджис") на 36к рублей 🙈 Конторка эта образовалась в 2023 г, и 13...
Alexander Andreev
10
/////////////////////////////////////// TChart / TLineSeries - сохранение данных (текстовый файл) /////////////////////////////////////// добрый день / работа с графиком: 1....
livontiy
14
кто поможет крякнуть чит? (реверс инжиринг) чтобы разблокировать премиум версию
Mёdkinson Medvezhkin
39
А что, надо по другому как-то?
rσσт@ανα∂αмιασ
10
Возник вопросик, а сисколл sys_read в лине должен возвращать 0 в eax когда я пытаюсь прочитать байт за пределами файла? А то я как-то не уверен, у меня сискол все время возвра...
rσσт@ανα∂αмιασ
8
Good morning devs I'm trying the solo entrepreneurship road, which is basically running a couple of projects and sell them to some customers. But for that I need a business ...
D H
3
Карта сайта