2016-04-04 7 views
3

Ich habe eine Pause api, die ich in Swagger dokumentieren möchte. Auf alle Anfragen kann die API mit einem 401 antworten.Wie kann ich eine 401 Antwort auf alle Pfade in Swagger hinzufügen

Also anstatt die 401 immer wieder für jeden Pfad zu definieren (nicht so DRY). Ich möchte definieren, dass alle Pfade eine 401 zurückgeben können.

Ist das möglich?

+0

Btw, es gibt eine Feature-Anforderung, um Standardantworten zu haben, um eine Duplizierung zu vermeiden: https://github.com/OAI/OpenAPI-Specification/issues/563. – Helen

Antwort

8

Ich glaube nicht, das ist eine perfekte Lösung, aber ich habe dies in einem Versuch gemacht zu trocknen ein wenig.

In der root swagger schema Sie definieren eine responses Objekt, das, wie durch den Swagger Spec definiert:

Ein Objekt-Antworten zu halten, die sich über Operationen verwendet werden können. Diese -Eigenschaft definiert keine globalen Antworten für alle Vorgänge.

responses: 
    400: 
    description: Bad Request 
    schema: 
     $ref: '#/definitions/Error' 
    401: 
    description: Unauthorized 
    schema: 
     $ref: '#/definitions/Error' 
    403: 
    description: Forbidden 
    schema: 
     $ref: '#/definitions/Error' 
    500: 
    description: Internal Server Error 
    schema: 
     $ref: '#/definitions/Error' 

definitions: 
    Error: 
    type: object 
    required: 
     - message 
    properties: 
     message: 
     type: string 
     description: 'The cause of the Error.' 

Sobald Sie das getan, dass Sie die gemeinsamen Antworten auf dem Pfad verweisen können.

paths: 
    /keys/: 
    get: 
     summary: 'Get All API Keys the caller has access to view.' 
     responses: 
     200: 
      description: 'Successfully got Keys' 
      schema: 
      $ref: '#/definitions/ApiKeyResponse' 
     400: 
      $ref: '#/responses/400' 
     401: 
      $ref: '#/responses/401' 
     500: 
      $ref: '#/responses/500' 

Zumindest diese bekommt man Konsistenz in Bezug auf die response Beschreibung und ein beliebiges Schema für diesen Antworttyp definiert. Ich habe wirklich gehofft, dass ich alle üblichen Fehlerreaktionen gruppieren und auf die Gruppe verweisen kann, aber ich habe keine Möglichkeit gefunden, dies zu tun.