通用构建请求方法响应未定义
Posted
技术标签:
【中文标题】通用构建请求方法响应未定义【英文标题】:Generic build request method response undefined 【发布时间】:2017-02-04 22:47:14 【问题描述】:我为我的所有 api 调用创建了一个通用的构建请求方法。响应正常,但不会在此方法之外传递。
我的 api.ts 类 (sn-p)
buildRequest(url, method, body?)
let options = new RequestOptions(
url: this.apiUrl + url,
method: method,
body: body
);
let req = new Request(options);
return this.http.request(req)
.map(res =>
res.json();
)
.catch(this.handleError);
handleError(error: any)
return Observable.throw(error.message);
在同一个类中,我定义了所有调用,如下所示:
getItem()
return this.buildRequest('url', RequestMethod.Get)
然后从我做的一个组件
this.api.getItem().subscribe(res =>
this.item = res;
)
在其他任何地方,但在 .map 内,res 未定义。当我使用常规时
返回 this.http.get(...)
这里显示的逻辑相同,它运行良好。我做错了什么?
我正在导入这两个:
从 'rxjs/Observable' 导入 Observable;
导入'rxjs/Rx'
【问题讨论】:
【参考方案1】:在您的buildRequest
方法中,您犯了一个小错误。当使用带有花括号的 lambda 表达式时,你必须返回一些东西:
x => x.Field // <-- this is a shorthand
等于
x => return x.Field;
因此,.map
调用中的代码应如下所示:
return this.http.request(req)
.map(res =>
return res.json();
)
.catch(this.handleError);
【讨论】:
以上是关于通用构建请求方法响应未定义的主要内容,如果未能解决你的问题,请参考以下文章