繁体   English   中英

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

[英]Generic build request method response undefined

我为我的所有api调用创建了通用的构建请求方法。 响应可以,但是未在此方法之外传递。

我的api.ts类(摘要)

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都是undefined 当我用常规

返回this.http.get(...)

并在此处显示相同的逻辑,效果很好。 我究竟做错了什么?

我要导入这两个:

从'rxjs / Observable'导入{Observable};

导入'rxjs / Rx'

在您的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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM