swagger 使用symfony 4 Nelmio API文档区和不记名令牌

cnjp1d6j  于 2022-12-13  发布在  其他
关注(0)|答案(3)|浏览(204)

我在Symfony 4中有API。我将NelmioApiDocBundle添加到我的项目中,但是我的文档有问题。这是我的配置:软件包\nelmio_API_doc.yaml

nelmio_api_doc:
    documentation:
        #        schemes: [http, https]
        info:
            title: Symfony JWT API
            description: Symfony JWT API docs
            version: 1.0.0
        securityDefinitions:
            Bearer:
                type: apiKey
                description: 'Authorization: Bearer {jwt}'
                name: Authorization
                in: header
        security:
            - Bearer: []
    areas: # to filter documented areas
        default:
            path_patterns:
                - ^/api(?!/doc$) # Accepts routes under /api except /api/doc

配置\路由.yaml

# Expose your documentation as JSON swagger compliant
app.swagger_ui:
    path: /api/doc
    methods: GET
    defaults: { _controller: nelmio_api_doc.controller.swagger_ui }

这是我的霸气ui屏幕:

我有控制器:SpeakerController,HomeController,我如何使每个控制器成为一个单独的区域,其余的在默认?即SpeakerController在区域扬声器,HomeController在区域主页等。
我的下一个问题是,我有一个受不记名令牌保护的API,当我在swagger中单击Authorize时,我将添加当前的jwt令牌,我想请求它,在响应中我得到:

{
  "code": 401,
  "message": "JWT Token not found"
}

在 Postman 我没有问题:

iezvtpos

iezvtpos1#

必须发送带有前缀的apiKey值
无记名

h43kikqp

h43kikqp2#

您将需要使用标记为控制器添加注解:

@SWG\Tag(name="Speaker")

请访问:https://symfony.com/doc/current/bundles/NelmioApiDocBundle/index.html#using-the-bundle

qybjjes1

qybjjes13#

我遇到了类似的问题。当点击**“试用”**时,令牌没有在请求中发送。
我的配置是好的,但我没有告诉Nelmio使用它在我的控制器。
正如@Marcello Kad所评论的,您可以使用以下配置:

nelmio_api_doc:
documentation:
    info:
        title: BaBaLex
        description: Base Lexicale Lex:gaMe
        version: 1.0.0
    components:
        securitySchemes:
            MySecurityScheme:
                type: http
                scheme: bearer
                bearerFormat: JWT
    security:
        - MySecurityScheme: []

在控制器中,在动作中,不要忘记:

@Security(name="MySecurityScheme")

相关问题