Api - готовим правильно

Казалось бы API это нечто простое, но хорошо реализованный процесс разработки API может сильно ускорить разработку ПО.

В сети сейчас представлен ряд готовых инструментов, которые умеют делать API и работать с ним. Однако, как показывает практика, они часто избыточны (реализация отнимает слишком много времени разработчика, тимлида, архитектора).

Решение

В настоящий момент, хорошим решением реализации API может быть GraphQL, но его недостаточно, потому что его идеология построена на:

  • Доменная модель (модели и поля)
  • Доступ к скоупам/функциям-наборам/функциям-экшенам модели (сложные выборки, сортировки, группировки)
  • Работа с выше перечисленным на уровне написания SQL-подобного синтаксиса в виде графа

А вот список того, что GraphQL не покрывает, но без этого никуда 

  • Доступ к сервис-классам (классам, которые имплементируют себя в виде сервиса бизнес-логики или внешнего сервиса)
  • Администрирование доступа API-клиентов (разграничение доступа к выше перечисленному)
  • Администрирование API-клиентов (непосредственно клиенты, токены, лимиты запросов и т.п.)
  • Авто-документирование API (желательно OAS 3, желательно на основе описания анотаций в коде или YAML)
  • Расширение API-функционала поддерживающее совместимость прежних версий

Что нужно клиенту

Клиент - приложение, которое взаимодействет с Вашим API, что ему нужно:

  • Контракт - формальное описание договоренностей взаимодействия клиента и сервера (API). Контракт можно расширять, но нельзя изменять, таким образом требуется поддерживать обратную совместимость. Если необходимо нарушить контракт, то пишут новую версию API.
  • Транзакционность запросов

Еще, хотелось бы напомнить про некоторые нюансы.

Response

Response не должен быть пустым, потому что в случае CORS запросов, браузеры по умолчанию могут получить доступ только к следующим заголовкам ответа:

  • Cache-Control
  • Content-Language
  • Content-Type
  • Expires
  • Last-Modified
  • Pragma

Если требуется, чтобы клиентское приложение получило доступ к другим заголовкам, необходимо чтобы серер отдавал заголовок:

Access-Control-Expose-Headers: Access-Token, Uid

Удачки.

Оцени публикацию:
  • 0,0
Оценили человек: 0

Похожие статьи:

Справочники и учебники:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2019 YaPro.Ru

Главная » Веб-мастеру » PHP »