通用构建请求方法响应未定义

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);

【讨论】:

以上是关于通用构建请求方法响应未定义的主要内容,如果未能解决你的问题,请参考以下文章

Django请求与响应

ajax方法总结

ajax方法总结:

ajax方法总结

ajax方法总结

ajax方法总结