问题标签 [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.
angular - 如何将标头添加到我的 Angular 发布请求中?
对于一个学校项目,我需要使用 Angular 制作一个简单的登录页面。单击登录按钮时,我需要在我的帖子中添加一个授权标题。我创建了一个后端,当我使用邮递员将我的授权值发布到该后端时,它可以正常工作,因此后端没有任何问题。当我尝试使用我的前端发布到同一个后端时,它不起作用。在帖子中添加标题的最佳方法是什么?看来意见分歧了。这是我的代码:
当我运行该代码时,我得到一个 400 状态响应并且没有添加标题。
angular - Angular 4/5 HttpClient:字符串类型的参数不可分配给“body”
Angular 文档说:
响应正文不会返回您可能需要的所有数据。有时服务器会返回特殊的标头或状态代码来指示某些条件,并且可能需要检查这些条件。为此,您可以告诉 HttpClient 您想要完整的响应,而不仅仅是带有观察选项的正文:
但是当我尝试这样做时,我得到一个编译时错误(虽然没有运行时错误,但按预期工作):
错误 TS2345:类型参数 '{ headers: HttpHeaders; 观察:字符串;}' 不能分配给类型为 '{ headers?: HttpHeaders | { [标题:字符串]:字符串 | 细绳[]; }; 观察?:“身体”;参数?:Ht...'。属性“观察”的类型不兼容。类型 'string' 不能分配给类型 '"body"'。
为什么?我用"@angular/http": "^5.1.0"
这是我的代码版本:
json - HttpClient - 映射 Json 数组结果并更改一些值
我在使用新的HttpClient
.
User[]
之前,我可以使用将用户 Json 数组映射到reduce
,如下所示:
这是/api/admin/getUsers/
回应的一部分:
我试过这个:
但是我还是想用map
直接反序列化来代替User[]
,因为里面有我想改的值就好了isValid
。
我怎么能用 new 做同样的事情HttpClient
,有人可以帮忙吗?
json - 为什么 Angular 4 中的 httpclient 假设请求正在发送 json 数据
我正在使用 angular 4 http 客户端到返回文本数据的服务器,因此我做了类似下面的操作
我没有告诉它响应是 json 格式的任何地方,但它仍然引发以下错误
SyntaxError:在 XMLHttpRequest.onLoad 的 Object.parse () 的位置 0 处的 JSON 中的意外标记 a
这些人在什么基础上假设响应是 json 格式:)
angular - 带有授权标头401的Angular 4 HTTP Get请求
我正在尝试从需要授权标头的 API 获取数据。它在 Postman 和 Node 上运行良好,但是当我尝试在 Angular 中使用它时,它只会返回 401。有人能在我的请求中找到错误吗?花了很长时间尝试,但找不到解决方案。
这是我的data.service.ts
这是我为检索该数据而对服务进行的调用,但 subscribe 方法返回错误
“订阅”类型上不存在属性“订阅”。您的意思是“取消订阅”吗?
这是我的 data.component.ts (为简洁起见删掉一些行)
赞赏!
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
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”方法:第一次调用服务器
此屏幕截图属于对服务器的第二次调用:
正如您在第二次调用的第二部分所看到的,包含“api-key”值的标头在“lazyUpdate”对象中发送。
angular - 如何在调用我的 api 之前减慢/等待?
祝你的朋友圣诞快乐。
我的 Angular 4 应用程序不会等待。
我想在调用 API 之前放慢速度。
但我只是继续碰壁。
我在我的代码中使用了 HttpInterceptor。
但是这些 Observable 只会爆炸。
以免受到太多的轻视。
下面你会发现我的尝试。
结果是调用了 API。
但没有安装调用者的结果
我的 Observable 似乎卡住了。
我的运气快没了。
我很清楚这是 Angular 中的一种反模式“不要等待随机数”,而是构建您的应用程序,这样您就不需要了。我的实际用例是,HttpInterceptor
我需要一些由其他 Observable 加载的东西,通常我没有问题,只有当用户刷新特定页面时,我才有可能没有加载这些东西。
我直接教授的“快速修复”是我做一个如果没有加载我等待一些(“给它时间加载”)然后我继续,谁在乎!用户不会经常刷新那个特定的角度链接。我最终走了很长一段路,全部移到 aconfig.ts
并使用APP_INITIALIZER
. 但是,如果我想等待,我仍然想知道如何等待一段时间,因此这个最小的例子。
angular - 为什么 HttpClient API 的大多数类都定义了不可变对象?
HttpClient的文档说明了以下关于不变性的内容:
存在拦截器来检查和改变传出请求和传入响应。但是,得知 HttpRequest 和 HttpResponse 类在很大程度上是不可变的可能会令人惊讶。
这是有原因的:因为应用程序可能会重试请求,拦截器链可能会多次处理单个请求。如果请求是可变的,则重试请求将与原始请求不同。不变性确保拦截器在每次尝试中看到相同的请求。
我觉得很难理解这个解释。有人可以提供解释吗?