{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…
Можно определять результат выполнения запроса разбирая только заголовки
Ну понимаешь, тебе сейчас скажут, что при получении 404 надо потом еще проверить тело ответа, в котором и детализировать, а где именно ошибка - т.е. по сути одна хрень, нужно парсить и читать тело ответа ;)
После такого беседовать не о чем более, удачи.
я как фронтенд разработчик, ноги бы таким проектировщикам апи поломал
тут смотря как посмотреть,и завист от требований клиента. например у меня был кейс когда какой-то промежутчный узел в сети отдавал 404 и запрос до апи даже не доходил. в такий кейсай даже на обишбку лушче вернуть 200
Но ведь при твоём 400 апи все равно верно отрабатывает.
Обсуждают сегодня