Как использовать 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 поддерживают параметр авторизации.

https://github.com/swagger-api/swagger-core/blob/master/modules/swagger-annotations/src/main/java/io/swagger/annotations/Api.java

@Api(value = "/myApi", description = "My API", produces = "application/json", 
authorizations=Array(new Authorization(value="basicAuth")))

Я никогда не использовал эту функцию, но, возможно, вы могли бы попробовать это.

Другие вопросы по тегам