是否可以使用nswag(TypeScript)自动生成自定义HTTP标头

时间:2018-07-01 00:32:39

标签: angular typescript http-headers swagger-codegen nswag

我使用nswag npm package来生成http服务,接口等。

典型服务代理的打字稿代码如下:

@Injectable()
export class TenantsServiceProxy {
...
    constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {
    ...

    getTenantId(subdomain: string | null): Observable<number | null> {
    ...
        let options_ : any = {
            observe: "response",
            responseType: "blob",
            headers: new HttpHeaders({
                "Content-Type": "application/json", 
                "Accept": "application/json"
                })
            };

        return this.http.request("get", url_, options_).flatMap((response_ : any) => {
            return this.processGetTenantId(response_);
        }).catch((response_: any) => {
        ...

关于HTTP Headers的详细位:

我想知道是否有一种方法可以告诉nswag工具自动添加一个额外的标头(在我的情况下为JWT Bearer添加Authorization)?

当然,有一种解决方法,可以使用文本编辑器使用以下代码替换标头位:

headers: new HttpHeaders({
            "Content-Type": "application/json", 
            "Accept": "application/json",
            'Authorization': 'Bearer ' + localStorage.getItem('token')
        })

但是我怀疑可能有一种方法可以包含其他标题。

也许有人已经解决了这个问题?

1 个答案:

答案 0 :(得分:2)

启用UseTransformOptionsMethod,设置ClientBaseClass并使用扩展代码在基类中定义方法...

请参见https://github.com/RSuter/NSwag/wiki/SwaggerToTypeScriptClientGenerator#transform-the-options-or-the-result