Как установить токен авторизации OAuth в клиенте typcript-jquery, сгенерированном из Swagger - PullRequest
0 голосов
/ 02 июля 2018

Я сгенерировал привязки для определенного API, для которого требуется токен OAuth.

swagger-codegen generate -i api.json -o test -l typescript-jquery

Но мне кажется, что заголовки жестко закодированы в сгенерированном коде.

Есть ли способ установить заголовок авторизации без изменения сгенерированного кода?

1 Ответ

0 голосов
/ 03 июля 2018

Не уверен, что это лучший или рекомендуемый способ, но я обошел все очевидные ограничения API, устанавливая заголовки в jquery перед вызовом сгенерированного SDK.

jquery.ajaxSettings.headers = { ... }

Похоже, что при предоставлении securityDefinitions, как отмечено в комментарии, генератор будет учитывать токен в конфигурации: https://github.com/swagger-api/swagger-codegen/blob/2.3.0_BACKUP_ONLY/modules/swagger-codegen/src/main/resources/typescript-jquery/api.mustache#L174

Отчасти проблема в том, что вообще невозможно было использовать привязки typcript-jquery, сгенерированный код выглядит так:

    let dfd = $.Deferred();
    $.ajax(requestOptions).then(
        (data: models.Operation, textStatus: string, jqXHR: JQueryXHR) =>
            dfd.resolve(jqXHR, data),
        (xhr: JQueryXHR, textStatus: string, errorThrown: string) =>
            dfd.reject(xhr, errorThrown)
    );
    return dfd.promise();

Хотя мое новое в теме мнение таково, что оно должно выглядеть примерно так:

    let dfd = $.Deferred();
    $.ajax(requestOptions).then(
        (data: models.Operation, textStatus: string, jqXHR: JQueryXHR) =>
            dfd.resolve({ request: jqXHR, body: data }),
        (xhr: JQueryXHR, textStatus: string, errorThrown: string) =>
            dfd.reject({ request: xhr, body: errorThrown})
    );
    return dfd.promise();

Учитывая, что подпись сгенерированного метода:

public someMethod(): JQueryPromise<{ response: JQueryXHR; body: models.Operation;  }>

Не уверен насчет части reject, но и компилятор, и intellisense счастливее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...