1. ホーム
  2. api

[解決済み] Swagger UIでリクエストと一緒にカスタムヘッダを送信するにはどうすればよいですか?

2022-11-28 10:42:39

質問

APIにいくつかのエンドポイントを持っています。 /user/login , /products .

Swagger UIでは emailpassword から /user/login を受信し、その応答として token の文字列が表示されます。

そして、レスポンスからトークンをコピーして、それを Authorization ヘッダの値として使用することができます。 /products を例として挙げます。

Swagger UIページのどこかに手動でテキスト入力を作成し、そこにトークンを置いて、何とかリクエストに注入すべきでしょうか、それとももっと良い方法でそれを管理するツールがあるのでしょうか?

どのように解決するのですか?

リクエストにヘッダーパラメータを追加すると、Swagger-UIはそれを編集可能なテキストボックスとして表示します。

swagger: "2.0"
info:
  version: 1.0.0
  title: TaxBlaster
host: taxblaster.com
basePath: /api
schemes:
- http

paths:

  /taxFilings/{id}:

    get:
      parameters:
      - name: id
        in: path
        description: ID of the requested TaxFiling
        required: true
        type: string
      - name: auth
        in: header
        description: an authorization header
        required: true
        type: string
      responses:
        200:
          description: Successful response, with a representation of the Tax Filing.
          schema:
            $ref: "#/definitions/TaxFilingObject"
        404:
          description: The requested tax filing was not found.

definitions:
  TaxFilingObject:
    type: object
    description: An individual Tax Filing record.
    properties:
      filingID:
        type: string
      year:
        type: string
      period:
        type: integer
      currency:
        type: string
      taxpayer:
        type: object

また、セキュリティの定義に、タイプ apiKey :

swagger: "2.0"
info:
  version: 1.0.0
  title: TaxBlaster
host: taxblaster.com
basePath: /api
schemes:
- http

securityDefinitions:
  api_key:
    type: apiKey
    name: api_key
    in: header
    description: Requests should pass an api_key header.

security: 
 - api_key: []

paths:

  /taxFilings/{id}:

    get:
      parameters:
      - name: id
        in: path
        description: ID of the requested TaxFiling
        required: true
        type: string

      responses:
        200:
          description: Successful response, with a representation of the Tax Filing.
          schema:
            $ref: "#/definitions/TaxFilingObject"
        404:
          description: The requested tax filing was not found.

definitions:
  TaxFilingObject:
    type: object
    description: An individual Tax Filing record.
    properties:
      filingID:
        type: string
      year:
        type: string
      period:
        type: integer
      currency:
        type: string
      taxpayer:
        type: object

securityDefinitions オブジェクトは、セキュリティスキームを定義します。

security オブジェクト (Swagger-OpenAPI では "security requirements" と呼ばれます) は、与えられたコンテキストにセキュリティスキームを適用します。 私たちの場合、トップレベルでセキュリティ要件を宣言することで、API全体に適用しています。 オプションとして、個々のパスアイテムおよび/またはメソッド内でそれをオーバーライドすることができます。

これは、セキュリティスキームを指定するための好ましい方法であり、最初の例からのヘッダーパラメータを置き換えるものでしょう。残念ながら、Swagger-UIは、少なくともこれまでの私のテストでは、このパラメータを制御するためのテキストボックスを提供していません。