navigation

Endpoints

Постоение API сервисов на основе gRPC + Google cloud Endpoints

Мотивация

Если несколько основных проблемных точек, если у вас много API.

  • API сервисов и их документация могут быть очень разнородными.
  • Поддержка документации в коде и отдельном документе так же может отнимать значительное количество времени.
  • Выдача и проверка прав доступа может быть неявной или непонятной

Именно поэтому предлагается использовать дизайн API, в котором учтены эти проблемы.

Protobuf

Протокол API и документация к свойствам, методам и сервисам описывается в proto файлах согласно design guide.

Это позволяет автоматически генерировать структурированныую документацию. Потенциально генерировать клиентские биьлиотеки для испоьлзования api сторонними разработчиками.

OAuth2

Используется OAuth2 авторизация c refresh_token и scopes.

Токены выдаются и учитываются отдельной службой, в коде конкретного api нужно лишь порставить аннотации со списоком скоупов к методам. ESP nginx автоматически декодирует access_token, валидирует его и не пропускает запрос в код api, что снижает излишнюю нагрузку на код апи.

Фактически само приложение независимо от языка особо ничего про авторизацию не знает.

Применение refresh_token + access_token с JWT позволяет убрать необходимость использования кешируеюего слоя с хранением access_token, что положительно сказывается на расходе RAM и CPU.