Grails 3 - документирование API-интерфейса Spring Security Rest в swagger

Я разрабатываю демо-версию REST Demo с использованием Grails 3 с сервисом Spring Security REST и Swagger Documentation. Ниже приведены зависимости для Spring Security Rest.

org.grails.plugins:весна-безопасность-остальное:2.0.0.M2

org.grails.plugins:весна-безопасность-остальное-горм:2.0.0.M2

где пользователь должен войти в систему, чтобы выполнить определенное подмножество операций. После добавления Swagger Doc с использованием следующего плагина и настройки доступа ко всем открытым API-интерфейсам я могу получить доступ ко всем документам Swagger API с помощью «localhost://applicationPath/api»

org.grails.plugins:swaggydoc-grails3:0.28.0

К сожалению, среди них нет конечных точек входа. Если я добавлю свой LoginController вместе с контроллером конечных точек API, тогда он перечислит все API входа, но URL-адрес доступа станет

APPLICATIONURL/api/v1/api/логин

Что плохо работает.

Проблема в том, что часть этих операций не может быть выполнена через встроенную форму пользовательского интерфейса Swagger (я нахожу это действительно хорошей функцией и хотел бы, чтобы она работала), потому что пользователь не вошел в систему. Есть ли решение этой проблемы? Могу ли я вручную определить некоторые конечные точки в Swagger?

Это мой пример кода для регистрации любого API с помощью Swagger.

@Api(
        value = 'Sample',
        description = 'Sample APIs.',
        position = 0,
        produces = 'application/json',
        consumes = 'application/json',
        basePath = 'v1',
        protocols = 'http, https',
        hidden = false
)
@Controller()
class SampleController {
@ApiOperation(
            value = 'Sample API',
            notes = '',
            response = Sample,
            responseContainer = 'Array',
            position = 0,
            httpMethod = 'GET',
            produces = 'application/json',
            consumes = 'application/json',
            protocols = 'http, https',
            hidden = false
    )
    @ApiImplicitParams([
            @ApiImplicitParam(name = 'max', value = 'Max records to return', defaultValue = '10', paramType = 'query', dataType = 'int', required = false, allowMultiple = false)
    ])
    @ApiResponses([
            @ApiResponse(code = 200, message = "", response = Sample),
    ])
    def sampleAPI() {
    }
}

Если кто-нибудь может помочь в этом, это будет большая помощь.


person emphywork    schedule 26.09.2017    source источник


Ответы (1)


Я создал API, который вызывает "api/login" для аутентификации.

person emphywork    schedule 16.11.2017