问题标签 [angular-httpclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
83856 浏览

angular - 如何将标头添加到我的 Angular 发布请求中?

对于一个学校项目,我需要使用 Angular 制作一个简单的登录页面。单击登录按钮时,我需要在我的帖子中添加一个授权标题。我创建了一个后端,当我使用邮递员将我的授权值发布到该后端时,它可以正常工作,因此后端没有任何问题。当我尝试使用我的前端发布到同一个后端时,它不起作用。在帖子中添加标题的最佳方法是什么?看来意见分歧了。这是我的代码:

当我运行该代码时,我得到一个 400 状态响应并且没有添加标题。

0 投票
4 回答
50761 浏览

angular - Angular 4/5 HttpClient:字符串类型的参数不可分配给“body”

Angular 文档说:

响应正文不会返回您可能需要的所有数据。有时服务器会返回特殊的标头或状态代码来指示某些条件,并且可能需要检查这些条件。为此,您可以告诉 HttpClient 您想要完整的响应,而不仅仅是带有观察选项的正文:

但是当我尝试这样做时,我得到一个编译时错误(虽然没有运行时错误,但按预期工作):

错误 TS2345:类型参数 '{ headers: HttpHeaders; 观察:字符串;}' 不能分配给类型为 '{ headers?: HttpHeaders | { [标题:字符串]:字符串 | 细绳[]; }; 观察?:“身体”;参数?:Ht...'。属性“观察”的类型不兼容。类型 'string' 不能分配给类型 '"body"'。

为什么?我用"@angular/http": "^5.1.0"

这是我的代码版本:

0 投票
2 回答
2643 浏览

json - HttpClient - 映射 Json 数组结果并更改一些值

我在使用新的HttpClient.

User[]之前,我可以使用将用户 Json 数组映射到reduce,如下所示:

这是/api/admin/getUsers/回应的一部分:

我试过这个:

但是我还是想用map直接反序列化来代替User[],因为里面有我想改的值就好了isValid

我怎么能用 new 做同样的事情HttpClient,有人可以帮忙吗?

0 投票
1 回答
1448 浏览

json - 为什么 Angular 4 中的 httpclient 假设请求正在发送 json 数据

我正在使用 angular 4 http 客户端到返回文本数据的服务器,因此我做了类似下面的操作

我没有告诉它响应是 json 格式的任何地方,但它仍然引发以下错误

SyntaxError:在 XMLHttpRequest.onLoad 的 Object.parse () 的位置 0 处的 JSON 中的意外标记 a

这些人在什么基础上假设响应是 json 格式:)

0 投票
2 回答
3892 浏览

angular - 带有授权标头401的Angular 4 HTTP Get请求

我正在尝试从需要授权标头的 API 获取数据。它在 Postman 和 Node 上运行良好,但是当我尝试在 Angular 中使用它时,它只会返回 401。有人能在我的请求中找到错误吗?花了很长时间尝试,但找不到解决方案。

这是我的data.service.ts

这是我为检索该数据而对服务进行的调用,但 subscribe 方法返回错误

“订阅”类型上不存在属性“订阅”。您的意思是“取消订阅”吗?

这是我的 data.component.ts (为简洁起见删掉一些行)

赞赏!

0 投票
1 回答
32299 浏览

angular - Angular HttpClient 将标头附加到 HttpHeaders

我正在从 HttpServer 升级到 HttpClientService,作为其中的一部分,我必须将我的标头从 Headers 切换到 HttpHeaders。但是由于某种原因,我的自定义标题不再被附加。我需要更新什么才能附加标题?

该方法返回一个 httpHeader 但它是空的。

在此处输入图像描述

0 投票
1 回答
646 浏览

ionic-framework - HttpClient 将参数对象附加到 GET 请求

对于这件事,我是使用 Ionic 或 Angular 的菜鸟。因此,作为备忘单,我正在使用 ionic-super-starter 模板(下面的链接)。我正在尝试向我的 API 发出 get 请求,它的工作原理只是找出我是否这样做:

但是当我将 url 参数放入一个对象时,它会停止工作:

我得到的唯一错误是“未经授权的请求”,因为包括访问令牌的选项对象未附加到 url。


在 ionic-super-starter 模板中,我的 params 对象中的每个键的providers/api/api.ts调用:.set()

但根据 Angular 大学的说法,这是不可能的,因为“HTTPParams 是不可变的”。如果这样做真的是错误的,我不相信它会出现在离子模板中。我也不相信我会是第一个遇到这个问题的人。

但是,我被困在这里,所以任何帮助将不胜感激。



Angular 大学链接: https ://blog.angular-university.io/angular-http/#httprequestparameters

ionic-super-starter 链接: https ://github.com/ionic-team/starters/tree/master/ionic-angular/official/super

0 投票
1 回答
6297 浏览

angular - HttpHeader 未正确发送

我正在根据本指南进行编码:https ://angular.io/guide/http#configuring-other-parts-of-the-request 。

我的代码如下:

以下代码是我将此对象发送到服务器时:

JSON.stringify显示此值:
header:{"normalizedNames":[],"lazyUpdate":[{"name":"api-key","value":"JEFE_HHHABBBJJJXXX","op":"s"}] ,"headers":[],"lazyInit":{"normalizedNames":[],"lazyUpdate":null,"headers":[]}}

但服务器没有收到“api-key”值。

我使用相同的值执行了 POSTMAN,并且服务器正确接收到了“api-key”值。

我究竟做错了什么?

更新

此快照表示第一次调用“getMenuOptions”方法:第一次调用服务器

此屏幕截图属于对服务器的第二次调用:

  1. 第 2 次通话的第 1 部分
  2. 第二次通话的第二部分

正如您在第二次调用的第二部分所看到的,包含“api-key”值的标头在“lazyUpdate”对象中发送。

0 投票
1 回答
1017 浏览

angular - 如何在调用我的 api 之前减慢/​​等待?

祝你的朋友圣诞快乐。
我的 Angular 4 应用程序不会等待。

我想在调用 API 之前放慢速度。
但我只是继续碰壁。

我在我的代码中使用了 HttpInterceptor。
但是这些 Observable 只会爆炸。

以免受到太多的轻视。
下面你会发现我的尝试。

结果是调用了 API。
但没有安装调用者的结果

我的 Observable 似乎卡住了。
我的运气快没了。


我很清楚这是 Angular 中的一种反模式“不要等待随机数”,而是构建您的应用程序,这样您就不需要了。我的实际用例是,HttpInterceptor我需要一些由其他 Observable 加载的东西,通常我没有问题,只有当用户刷新特定页面时,我才有可能没有加载这些东西。

我直接教授的“快速修复”是我做一个如果没有加载我等待一些(“给它时间加载”)然后我继续,谁在乎!用户不会经常刷新那个特定的角度链接。我最终走了很长一段路,全部移到 aconfig.ts并使用APP_INITIALIZER. 但是,如果我想等待,我仍然想知道如何等待一段时间,因此这个最小的例子。

0 投票
1 回答
1488 浏览

angular - 为什么 HttpClient API 的大多数类都定义了不可变对象?

HttpClient的文档说明了以下关于不变性的内容:

存在拦截器来检查和改变传出请求和传入响应。但是,得知 HttpRequest 和 HttpResponse 类在很大程度上是不可变的可能会令人惊讶。

这是有原因的:因为应用程序可能会重试请求,拦截器链可能会多次处理单个请求。如果请求是可变的,则重试请求将与原始请求不同。不变性确保拦截器在每次尝试中看到相同的请求。

我觉得很难理解这个解释。有人可以提供解释吗?