"स्वीकृत उत्तर" क्यों काम करता है ... लेकिन यह मेरे लिए पर्याप्त नहीं था
यह विनिर्देश में काम करता है। कम से कम swagger-tools
(संस्करण 0.10.1) इसे वैध के रूप में मान्य करता है।
लेकिन यदि आप अन्य उपकरणों का उपयोग कर रहे हैं जैसे swagger-codegen
(संस्करण २.१.६) तो आपको कुछ कठिनाइयाँ आएंगी, भले ही इससे उत्पन्न ग्राहक में प्रमाणीकरण परिभाषा हो, जैसे:
this.authentications = {
'Bearer': {type: 'apiKey', 'in': 'header', name: 'Authorization'}
};
विधि (समापन बिंदु) कहा जाता है से पहले हेडर में टोकन को पारित करने का कोई तरीका नहीं है। इस फंक्शन सिग्नेचर में देखें:
this.rootGet = function(callback) { ... }
इसका मतलब यह है कि, मैं केवल एक टोकन के बिना कॉलबैक (अन्य मामलों में क्वेरी पैरामीटर, आदि) पास करता हूं, जिससे सर्वर के अनुरोध का गलत निर्माण होता है।
मेरा विकल्प
दुर्भाग्य से, यह "सुंदर" नहीं है, लेकिन यह तब तक काम करता है जब तक मुझे स्वैगर पर जेडब्ल्यूटी टोकन समर्थन नहीं मिलता है।
नोट: जिस पर चर्चा की जा रही है
तो, यह एक मानक हेडर की तरह प्रमाणीकरण को संभालता है। path
ऑब्जेक्ट पर एक हेडर paremeter संलग्न करें:
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'
यह विधि हस्ताक्षर पर एक नया पैरामीटर के साथ एक क्लाइंट उत्पन्न करेगा:
this.rootGet = function(authorization, callback) {
// ...
var headerParams = {
'authorization': authorization
};
// ...
}
इस विधि का सही तरीके से उपयोग करने के लिए, बस "पूर्ण स्ट्रिंग" पास करें
// 'token' and 'cb' comes from elsewhere
var header = 'Bearer ' + token;
sdk.rootGet(header, cb);
और काम करता है।