Чому "Прийнятий відповідь" працює ... але мені це було недостатньо
Це працює в специфікації. Принаймні swagger-tools
(версія 0.10.1) підтверджує це як дійсне.
Але якщо ви використовуєте інші інструменти, як-от swagger-codegen
(версія 2.1.6), ви виявите деякі труднощі, навіть якщо створений клієнт містить визначення автентифікації, наприклад, таке:
this.authentications = {
'Bearer': {type: 'apiKey', 'in': 'header', name: 'Authorization'}
};
Немає можливості передати маркер у заголовок до виклику методу (кінцевої точки). Подивіться на цю функцію:
this.rootGet = function(callback) { ... }
Це означає, що я передаю лише зворотний виклик (в інших випадках параметри запиту тощо) без маркера, що призводить до неправильної побудови запиту до сервера.
Моя альтернатива
На жаль, це не "досить", але працює, поки я не отримаю підтримку JWT Tokens на Swagger.
Примітка: про що йде мова в
Отже, це обробка аутентифікації як стандартний заголовок. На path
об'єкт додайте параметр заголовка:
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);
І працює.