Neden "Kabul Edilen Cevap" çalışıyor ... ama benim için yeterli değildi
Bu, spesifikasyonda çalışır. En azından swagger-tools
(sürüm 0.10.1) bunu geçerli olarak doğrular.
Ancak swagger-codegen
(sürüm 2.1.6) gibi başka araçlar kullanıyorsanız , oluşturulan istemci aşağıdaki gibi Kimlik Doğrulama tanımını içerse bile bazı zorluklarla karşılaşacaksınız:
this.authentications = {
'Bearer': {type: 'apiKey', 'in': 'header', name: 'Authorization'}
};
Yöntem (uç nokta) çağrılmadan önce belirteci başlığa geçirmenin bir yolu yoktur. Bu işlev imzasına bakın:
this.rootGet = function(callback) { ... }
Bu, yalnızca geri aramayı (diğer durumlarda sorgu parametreleri, vb.) Belirteç olmadan ilettiğim anlamına gelir, bu da isteğin sunucuya yanlış yapılandırılmasına neden olur.
Benim alternatifim
Ne yazık ki "güzel" değil ama Swagger'da JWT Tokens desteği alana kadar işe yarıyor.
Not: tartışılan
Bu nedenle, kimlik doğrulamasını standart bir başlık gibi ele alır. Açık path
bir nesne, bir başlık parametrenin içine ekleyin:
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'
Bu, yöntem imzasında yeni bir parametreye sahip bir istemci oluşturacaktır:
this.rootGet = function(authorization, callback) {
// ...
var headerParams = {
'authorization': authorization
};
// ...
}
Bu yöntemi doğru şekilde kullanmak için "tam dizeyi" iletmeniz yeterlidir.
// 'token' and 'cb' comes from elsewhere
var header = 'Bearer ' + token;
sdk.rootGet(header, cb);
Ve çalışır.