如何使用swkger与akka-http&基本认证

时间:2016-07-08 12:55:48

标签: scala swagger akka-http swagger-akka-http

我正在尝试使用swagger& amp录制akka-http API。 swagger-akka-httpThis blog post给了我一个良好的开端,但现在我陷入困境,试图记录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 UI中查看。但是,我无法使用生成的示例,因为缺少auth选项。

我没有找到任何使用swagger-akka-http的示例,只有一些使用yaml config

yaml中,这可能如下所示:

securityDefinitions:
  basicAuth:
    type: basic
    description: HTTP Basic Authentication.

但是,我没有yaml。除了通过注释,我也无法控制生成的.json

IIUC,提及auth方法的正确位置是authorizationsApi注释的ApiOperation参数。此参数应包含Authorization注释数组。

每个value注释的Authorization属性应该引用SecurityDefinitionObject

但我不知道如何使用注释定义此SecurityDefinitionObject

Authorization注释不应该单独使用,如果是,则会被忽略。

我有什么遗漏的吗?我是否需要额外的yamljson文件以及其他声明,如果我这样做,我该把它放在哪里?更多的东西呢?

谢谢

修改

使用0.7.2-SNAPSHOT,正在生成basicAuth数组:

paths: {
    /foos: {
        get: {
        security: [
            {
            basicAuth: [ ]
            }
        ],

现在唯一的问题是让Swagger UI正确解释它并在示例中使用auth。 AFAIK,如果您需要在UI中使用基本身份验证,则必须自行添加,如here所述

1 个答案:

答案 0 :(得分:2)

我目前维持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")))

我从未使用过此功能,但也许您可以尝试一下。