当前位置: 首页 > 知识库问答 >
问题:

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

子车劲
2023-03-14

我为我的所有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;
    }
})

除了在。地图,res未定义。当我用普通的

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

同样的逻辑在这里显示,它工作得很好。我做错了什么?

我正在导入这两个:

从“rxjs/可观察”导入{可观察的};

导入'rxjs/Rx'

共有1个答案

丁长卿
2023-03-14

在<code>buildRequest</code>方法中,您犯了一个小错误。使用带大括号的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);
 类似资料:
  • 我正在尝试从JavaScript应用程序向另一个应用程序中的endpoint进行API调用。 当我调用endpoint时,我得到了状态代码和消息,但我无法以任何方式访问响应体。我已经尝试了不同的方法来获取数据,但似乎没有一种方法对我有效。 在方法“someAction”中,我想使用来自API调用的响应/结果中的数据。我在代码中添加了单个日志行打印的输出。 如何在定义“result.status/m

  • 我尝试了拉雷维尔的入门指南。通用域名格式。 有一章创建了任务。回调和函数

  • 问题内容: 也许我只是没有正确阅读规范,或者我的心态仍然停留在较早的同步方法上,但是Go 中发送一种类型作为接收其他类型作为响应 的正确方法 是什么? 我想到的一种方法是 该高速缓存对于此示例并不是真正必需的,但否则将导致数据争用。 这是我应该做的吗? 问题答案: 有很多可能性,这取决于解决问题的最佳方法。当您从某个渠道收到消息时,没有什么比默认的响应方式更好的了–您需要自己构建流程(肯定是在问题

  • 嗨,我正在通过axios尝试reactjs POST请求,但出现错误,我查看了所有文档,但错误未得到解决。 这是我的错误: 未捕获(promise中)错误:请求在XMLHttpRequest的结算(eval at(bundle.js:4621),:15:15)处的createError(eval at(bundle.js:4615),:18:12)处失败,状态代码为400。手工装载(在(捆js:4

  • 我不熟悉Laravel框架,现在在尝试更新记录的用户信息时遇到了一个问题。 路线: 错误: UsersController中的FatalErrorException。php第24行:调用未定义的方法Illumbite\Support\Facades\Request::input()

  • 介绍 YurunHttp 的请求响应类,结果类。除了遵循 PSR-7 规范,另外还增加了一些人性化的方法。 类:Yurun\Util\YurunHttp\Http\Response use Yurun\Util\HttpRequest; $http = new HttpRequest; $response = $http->get('http://www.baidu.com'); 方法 响应内