• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何动态使用接口?

angular 来源:Crhistian Ramirez 15次浏览

我正在编写一个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以某种方式知道特定于列出类别的接口。我该如何做到这一点?我尝试过传递接口,但是当我阅读接口时,它看起来并不像它们在运行时存在的那样。


===========解决方案如下:

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

否则找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'; 
    } 
} 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)