За последние 24 часа нас посетили 20048 программистов и 1079 роботов. Сейчас ищет 761 программист ...

Какая должна быть структура json в респонсах API?

Тема в разделе "Laravel", создана пользователем Сереганек, 5 апр 2020.

Метки:
  1. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Столкнулся с проблемой отправки одинаковых по структуре json ответов в REST API. Проблема заключается в том, что часть ошибок возвращает сам фреймворк, часть обрабатываю я. И даже в рамках обработанных мною: я могу также вызывать эксепшены, а могу формировать свой json, опираясь на какие-то best practice. А кто-то использует сторонние пакеты. И получается, что фронтенд при обработке ответов должен предусматривать несколько конфигураций json-ответов, а это лишнее время, лишний код, больше ошибок.

    1. Поделитесь инфой, как вы решаете проблему, чтобы все респонсы были одинаковые? Вы используете самописные какие-то классы для этого, или бросаете встроенные эксепшены, или сторонные пакеты?

    2. И еще, разные ошибки могут отлавливаться на разных этапах. Например, одна при входе в констроллер, при валидации. Вторая в модели при попытке записать что-то в бд, третья где-то в сервисах. Как вы поступаете: как только есть ошибка в методе, вы сразу возвращаете респонс с текстом ошибки, или передаете эту ошибку например наверх в констроллер и уже оттуда респонс?
     
  2. ElisDN

    ElisDN Активный пользователь

    С нами с:
    13 фев 2018
    Сообщения:
    605
    Симпатии:
    130
    1. Переопределяю ErrorHandler фреймворка так, чтобы он возвращал все ошибки в нужном формате.

    2. Если ошибка в модели, то кидаю исключение DomainException. И по этому типу уже вывожу в ErrorHandler или перехватываю в своём DomainExceptionMiddleware. При желании аналогично можно выбрасывать и ошибки валидации через ValidationException($errors) и ловить наверху.
     
    mkramer и Сереганек нравится это.