web-dev-qa-db-fra.com

Comment définir les paramètres d'en-tête dans OpenAPI 3.0?

Dans OpenAPI (Swagger) 2.0, nous pouvions définir des paramètres d'en-tête comme ceci:

paths:
  /post:
    post:
      parameters:
        - in: header
          name: X-username

Mais dans OpenAPI 3.0.0, les paramètres sont remplacés par des corps de demande, et je ne trouve pas de moyen de définir les paramètres d'en-tête, qui seraient en outre utilisés pour l'authentification.

Quelle est la bonne façon de définir les en-têtes de demande dans OpenAPI 3.0.0?

9
kritika agarwal

Dans OpenAPI 3.0, les paramètres d'en-tête sont définis de la même manière que dans OpenAPI 2.0, sauf que type a été remplacé par schema:

paths:
  /post:
    post:
      parameters:
        - in: header
          name: X-username
          schema:
            type: string

En cas de doute, consultez le guide Describing Parameters .

Mais dans Swagger 3.0.0, les paramètres sont remplacés par des corps de requête.

Cela n'est vrai que pour les paramètres de forme et de corps. Les autres types de paramètres (chemin, requête, en-tête) sont toujours définis comme parameters.

définir des paramètres d'en-tête, qui seraient en outre utilisés pour l'authentification.

Une meilleure façon de définir les paramètres liés à l'authentification consiste à utiliser securitySchemes plutôt que de définir ces paramètres explicitement dans parameters. Des schémas de sécurité sont utilisés pour des paramètres tels que les clés API, l'ID d'application/secret, etc. Dans votre cas:

components:
  securitySchemes:
    usernameHeader:
      type: apiKey
      in: header
      name: X-Username

paths:
  /post:
    post:
      security:
        - usernameHeader: []
      ...
13
Helen