Warum "Akzeptierte Antwort" funktioniert ... aber es hat mir nicht gereicht
Dies funktioniert in der Spezifikation. Zumindest swagger-tools
(Version 0.10.1) validiert es als gültig.
Wenn Sie jedoch andere Tools wie swagger-codegen
(Version 2.1.6) verwenden, treten einige Schwierigkeiten auf, selbst wenn der generierte Client die folgende Authentifizierungsdefinition enthält:
this.authentications = {
'Bearer': {type: 'apiKey', 'in': 'header', name: 'Authorization'}
};
Es gibt keine Möglichkeit, das Token an den Header zu übergeben, bevor die Methode (Endpunkt) aufgerufen wird. Schauen Sie sich diese Funktionssignatur an:
this.rootGet = function(callback) { ... }
Dies bedeutet, dass ich den Rückruf (in anderen Fällen Abfrageparameter usw.) nur ohne Token weitergebe, was zu einem falschen Build der Anforderung an den Server führt.
Meine Alternative
Leider ist es nicht "hübsch", aber es funktioniert, bis ich Unterstützung für JWT-Tokens auf Swagger bekomme.
Hinweis: Dies wird in diskutiert
Die Authentifizierung wird also wie ein Standardheader behandelt. path
Fügen Sie am Objekt einen Header-Parameter hinzu:
swagger: '2.0'
info:
version: 1.0.0
title: Based on "Basic Auth Example"
description: >
An example for how to use Auth with Swagger.
host: localhost
schemes:
- http
- https
paths:
/:
get:
parameters:
-
name: authorization
in: header
type: string
required: true
responses:
'200':
description: 'Will send `Authenticated`'
'403':
description: 'You do not have necessary permissions for the resource'
Dadurch wird ein Client mit einem neuen Parameter für die Methodensignatur generiert:
this.rootGet = function(authorization, callback) {
// ...
var headerParams = {
'authorization': authorization
};
// ...
}
Um diese Methode richtig anzuwenden, übergeben Sie einfach die "vollständige Zeichenfolge".
// 'token' and 'cb' comes from elsewhere
var header = 'Bearer ' + token;
sdk.rootGet(header, cb);
Und funktioniert.