>我已经为一个需要OAuth令牌的swagger定义的API生成了绑定。
swagger-codegen generate -i api.json -o test -l typescript-jquery
但在我看来,标头是在生成的代码中硬编码的。
有没有办法在不修改生成的代码的情况下设置授权标头?
不确定这是最好的方法,还是推荐的方法,但在调用生成的 SDK 之前,我解决了在 jquery 中设置标头的明显 api 限制。
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
部分问题是根本无法使用打字稿-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
部分,但编译器和智能感知都更快乐。