【问题标题】:Angular: Sending POST request with empty request bodyAngular:发送带有空请求正文的 POST 请求
【发布时间】:2021-03-12 14:52:29
【问题描述】:

我正在对后端服务进行有角度的 POST 调用。用例是这样的请求没有正文,所以我喜欢:

http.post("my/backend/service", null);

我观察到端点没有命中,也没有错误。

这不是为 POST 处理空请求正文的正确方法吗?

【问题讨论】:

  • 您是否查看了浏览器的“网络”选项卡以查看是否向服务器发出了 POST 请求?你试过空字符串吗? http.post("my/backend/service", "");?
  • 是的,在网络选项卡中我没有看到任何 POST 请求。不过,我还没有尝试过使用“”。

标签: angular post


【解决方案1】:

post 方法返回一个Observable,因此您需要将subscribe 传递给post 方法,或者将Observablesubscribe 传递给您的方法。 调用post 方法并获取Observable 就像准备请求一样,订阅Observable 就像运行查询一样。

http.post("my/backend/service", null).subscribe();

您可以在last section of this Angular tutorial 中找到更多相关信息。

因为service方法返回一个配置数据的Observable,所以组件订阅了该方法的返回值。

该示例使用get() 方法,但问题来自响应的类型:Observable

【讨论】:

  • 但是在请求被服务后需要订阅来做一些操作。我不需要做任何事情。我还需要订阅吗?
  • 你有没有提到post() 不会发送请求,除非有subscribe
  • 需要 @Mandroid subscribe 才能执行代码。如果没有subscribe,您只会创建一个可观察对象,他将永远不会执行自己。只需尝试一下,您就会在“网络”选项卡中看到该请求。
  • @HereticMonkey 我已经在我的答案中添加了详细信息,并附有来源。
【解决方案2】:

发送空的 JSON 对象,也许它会起作用。

http.post("my/backend/service", {});  

【讨论】:

    猜你喜欢
    • 2019-03-15
    • 2014-07-06
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    相关资源
    最近更新 更多