Подскажите, как правильно возвращать данные клиенту при запросе? Пишу приложение на laravel, но думаю в других фреймворках тоже самое будет. Допустим у меня есть контроллер, в котором есть метод добавления товара в корзину.. Что он должен возвращать клиенту при запросе? Запрос на него будет приходить очевидно через ajax..
У меня пока такие варианты:
- Вернуть json со статусом и ошибками, если они есть и обработать на клиенте
- Возвращать статус ответа, отличимый от 200 (301), если добавление не удалось и обработать на клиенте
- Также можно отдавать вьюшку готовую и отображать в модалке, типа товар успешно добавлен и показать его в модалке к примеру..
Вариантов как то слишком много.. Какой из них лучше, почему и какие еще есть варианты?
Также непонятно, что должен делать такой метод при обычном запросе не через ajax.. Делать редирект на предыдущий урл или корзину например?
1. Если модель переданная в API не будет изменена - то можно отдать Accepted = 202
2. Если подразумевается изменение модели, или хоть одного поля, - то нужно вернуть Ok = 200, в body положить новую модель.
Если ошибки - в любом случае возвращаем код отличный от успешного, в body ложим контракт с данными, чтобы затем обработать.
darksladen: JSON конечно.
ну фронтенд должен знать формат ошибки, чтобы понимать какие поля читать.
условно там должны быть поля КодОшибки, ТекстОшибки
КодОшибки не путать в кодом ответа HTTP. Код - это код возможной проблемы, если существует возможность понять причину на стороне сервера. У очень крупных API такое есть.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.