Ответы пользователя по тегу API
  • Как правильно возвращать ошибки в своем API, Laravel?

    Как основной индикатор ошибки API я использую HTTP статусы. Laravel из коробки поддерживает много случаев:
    • Если вы используете встроенную валидацию, то Laravel автоматически возвращает HTTP 422 и json массив с ошибками.
    • Если для получения модели вы используете метод Model::findOrFail(), то Laravel автоматически выбрасывает ModelNotFoundException и автоматически генерирует для него HTTP 404 ответ.
    • Laravel автоматически возвращает корректный HTTP 4xx ответ, если пользователь не авторизован.
    • В остальных случаях можно возвращать ошибки вручную, с использованием хелперов, например: abort(403, 'You don\'t have access to do that');

    Таким образом, вручную ошибки возвращать тоже придется, но в большинстве случаев Laravel сделает это за вас.
    Ответ написан
    Комментировать
  • REST API Best Practice?

    У нас используется следующий подход:
    Есть основной ресурс, например /cats/1 в вашем случае. Есть дополнительные атрибуты: /cats/1/friends , /cats/1/wc. Если нужно получить множество атрибутов за раз, то используется GET параметр with: /cats/1?with=friends,wc. При этом если такой атрибут не может понадобиться отдельно от основного ресурса, то для него вообще не создается отдельный url, и он просто получается с помощью параметра with.
    Это чем то похоже на GraphQL, но проще в реализации. Хотя если у вас множество типов с данных со сложными связями, возможно именно GraphQL подойдет вам лучше.
    Ответ написан
    Комментировать
  • Дизайн REST API: Как сейчас принято передавать авторизационный токен?

    Ваши вопросы по порядку:
    1. Хорошей практикой считается передача http-заголовка Authorization (все известные мне методы: Basic auth, JWT token, Oauth2 предполагают его использование).
    2. Одно из преимуществ, которые я вижу, это возможность быстро проверить какие либо результаты прямо в браузере, т.к. при использовании авторизации через http-заголовок, нужно использовать какой-либо инструмент для тестирования API. Но я бы добавил это только как альтернативный вариант авторизации, например только на тестовом сервере/в локальной среде, и не использовал в продакшене.
    3. Никаких граблей со вторым вариантом не встречал, т.к. это стандартный заголовок. Предполагаю, что можно наткнуться на грабли с третьим вариантом, например нестандартные заголовки будут резаться какими-нибудь проксями, кешами.
    Ответ написан
    Комментировать
  • Как шифровать данные в API, между бекенд и приложения?

    Если вы не передаете какие-нибудь секретные документы, то вам достаточно будет использовать надежную авторизацию (oauth2, jwt и т.д.) и настроить https соединение на сервере, таким образом ваши данные будут передаваться по сети в зашифрованном виде.
    Ответ написан
    Комментировать