Как использовать swagger с akka-http и базовой аутентификацией
Я пытаюсь задокументировать API akka-http, используя swagger & swagger-akka-http. Этот пост в блоге дал мне хорошее начало, но теперь я застрял, пытаясь задокументировать тот факт, что API использует базовую аутентификацию.
что у меня есть:
@Path("/foo")
@Api(value = "/foo", produces = "application/json")
class FooService ...
@ApiOperation(value = "Get list of all foos", nickname = "getAllFoos", httpMethod = "GET",
response = classOf[Foo], responseContainer = "Set")
def getAll: Route = get {...
Это создает JSON, который я могу просмотреть в пользовательском интерфейсе Swagger. Однако я не могу использовать сгенерированные примеры, так как опция auth отсутствует.
Я не нашел примеров использования swagger-akka-http, только некоторые из них yaml
конфиг
В yaml
это может выглядеть так:
securityDefinitions:
basicAuth:
type: basic
description: HTTP Basic Authentication.
однако у меня нет yaml
, Также я не имею контроля над сгенерированным .json
кроме как через аннотации.
IIUC, правильное место, чтобы упомянуть метод аутентификации является authorizations
параметр Api
или же ApiOperation
аннотаций. Этот параметр должен содержать массив Authorization
аннотаций.
value
атрибут каждого Authorization
аннотация должна ссылаться на SecurityDefinitionObject
Но я понятия не имею, как определить это SecurityDefinitionObject
используя аннотации.
Authorization
аннотация не должна использоваться автономно и игнорируется, если она есть.
Я что-то пропустил? Нужна ли мне дополнительная yaml
или же json
файл с дополнительными декларациями и куда мне его поместить, если я это сделаю? Что-то еще?
Спасибо
РЕДАКТИРОВАТЬ
С помощью 0.7.2-SNAPSHOT генерируется массив basicAuth, например:
paths: {
/foos: {
get: {
security: [
{
basicAuth: [ ]
}
],
Теперь единственная проблема заключается в том, чтобы пользовательский интерфейс Swagger правильно его интерпретировал и использовал аутентификацию в примерах. AFAIK, если вам нужен базовый auth в пользовательском интерфейсе, вы должны добавить его самостоятельно, как описано здесь
1 ответ
В настоящее время я поддерживаю swagger-akka-http.
Код является в значительной степени тонкой оболочкой вокруг базы кода swagger.io.
Аннотации @Api и @ApiOperation поддерживают параметр авторизации.
@Api(value = "/myApi", description = "My API", produces = "application/json",
authorizations=Array(new Authorization(value="basicAuth")))
Я никогда не использовал эту функцию, но, возможно, вы могли бы попробовать это.