如何动态使用接口?

我正在编写一个SDK,我正在使用一个方法callApi来完成建立一个http请求的重复工作。如何动态使用接口?

这就是:

private callApi(method: string, route: string, options?: object, body?: object) { 

// build up query parameters

let params = new HttpParams();

if (options) {

_.forOwn(options, (val, key) => {

params.append(key, val);

})

}

// get and delete don't have a body

if (method == 'get' || method === 'delete') {

return this.http[method](this.apiurl + route, {

params: params,

headers: new HttpHeaders().set('Authorization', 'Bearer ' + this.GetToken())

})

} else {

return this.http[method](this.apiurl + route, body, {

params: params,

headers: new HttpHeaders().set('Authorization', 'Bearer ' + this.GetToken())

})

}

}

我想用另一种方法来调用它,例如:

ListCategories: (options?: object) => { 

return this.callApi('get', '/me/categories', options)

},

但我也想莫名其妙地调用它与方法一个特定于调用它的方法的接口。

因此,例如,当我调用ListCategories时,我希望这个泛型方法callApi以某种方式知道特定于列出类别的接口。我该如何做到这一点?我尝试过传递接口,但是当我阅读接口时,它看起来并不像它们在运行时存在的那样。

回答:

好像你正在寻找像拦截器一样的东西。如果是这种情况,你可以使用角拦截器。

  • angular 5 Interceptor
  • angular 5 Interceptor, blog

否则找SOLN使用http.request方法下面给出的。

export class CustomHttpService { 

private apiurl: string;

constructor(private http: Http) {

// test

}

public callApi<T>(method: string, route: string, options?: object, body?: object): Observable<T> {

const params = new HttpParams();

if (options) {

_.forOwn (options, (val, key) => {

params.append (key, val);

});

}

const headers = new Headers();

headers.set ('Authorization', 'Bearer ' + this.getTaken())

return this.http.request (this.apiurl + route, {

method,

body,

params,

headers

}).map ((response) => response.json());

}

private getTaken() {

return 'xxxx';

}

}

以上是 如何动态使用接口? 的全部内容, 来源链接: utcz.com/qa/260945.html

回到顶部