如何在由Swagger

时间:2018-07-02 17:32:12

标签: jquery typescript swagger

我已经为需要OAuth令牌的庞大的API生成了绑定。

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

但是在我看来,标头已硬编码在生成的代码中。

是否可以在不修改生成的代码的情况下设置授权标头?

1 个答案:

答案 0 :(得分:1)

不确定这是最好的方法还是推荐的方法,但是我在调​​用生成的SDK之前解决了明显的api限制,即在jquery中设置标头。

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

部分问题是根本无法使用typescript-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部分,但是编译器和智能感知都更快乐。