Swagger UI不向请求添加标头

时间:2017-04-05 18:57:55

标签: swagger swagger-ui swagger-2.0 api-key

我使用的是Swagger 2.0和Swagger UI 3.0.3。

在我的api_definition.yaml我的路径之前有以下内容:

swagger: '2.0'

################################################################################
#                  Host, Base Path, Schemes and Content Types                  #
################################################################################
# Metadata
info:
  version: v1
  title: Microservice
  description: Microservice API!


host: sandbox

basePath: '/apps/fiji/v1'
schemes:
  - http

securityDefinitions:
  apikey:
    type: apiKey
    name: X-Access-Token
    in: header

security:
  - apikey: []

produces:
  - application/json
consumes:
  - application/json

这会在Swagger UI中添加授权按钮,用户可以在其中粘贴API密钥。我希望在每个请求的请求标头中发送此API密钥。这不会发生,我不知道为什么。我错过了什么吗?

编辑:

请求似乎已发送,我回来401 Unauthorized

Chrome开发者工具显示以下请求标题:

GET /apps/fiji/v1/getCPICountries HTTP/1.1
Host: sandbox
Connection: keep-alive
accept: application/json
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
content-type: application/json
Referer: http://sandbox/apps/fiji/vendor/swagger-ui/dist/index.html?url=http://sandbox/apps/fiji/swagger/api_definition.yaml
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

我将路径设置为:

# API Paths
paths:
  # getCPICountries endpoint
  /getCPICountries:
    # HTTP operations
    get:
      # Describe this verb here. Note: you can use markdown
      description: |
        Returns a list of countries and country codes
      produces:
      - application/json
      security:
        - auth:
          - role_admin
      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description: Successful response
          # A schema describing your response object.
          # Use JSON Schema format
          schema:
            properties:
              data:
                type: array
                items:
                  $ref: '#/definitions/CPIResponse'

定义如下:

definitions:
  CPIResponse:
    type: object
  UserObject:
    type: object
    properties:
      email:
        type: string
      id:
        type: number
      orgId:
        type: number
      firstName:
        type: string
      lastName:
        type: string

1 个答案:

答案 0 :(得分:1)

问题是我在路径中覆盖了security。我需要删除以下内容:

security:
    - auth:
    - role_admin