【发布时间】:2016-04-10 20:20:00
【问题描述】:
如果状态码小于 200 且大于 300,我一直在寻找使用 $http 在 angularjs 中看不到 webapi 响应的原因。
我已经将 angular.js 调试到我了解发生了什么的程度(基本上它会丢弃包含我关心的数据的承诺,如果状态码不被视为成功,则在没有它的情况下创建一个新的承诺)
-参见https://github.com/angular/angular.js/blob/master/src/ng/q.js#L270-L280的代码
this.$$state.value(保存 http 响应)由于某种原因在此时丢失。
省略原始值是否有意义?我不会在不在这里询问我是对还是错的情况下提交错误报告。
这一切背后的原因是我正在服务器端处理一些信用卡信息。如果处理器说它是无效卡,我认为它不会是 200 代码,对吗?请参阅此问题的答案.....建议业务规则为 400。这在 angularjs 中仍然失败。
What is the appropriate HTTP status code response for a general unsuccessful request (not an error)?
另外,仅供参考,httpInterceptor 也不起作用,因为它们是在发生这种“承诺替换”之后使用的。
【问题讨论】:
-
我不确定在你的问题末尾重复你的标题如何让 Stack Overflow 成为一个非常好的问题。
-
这不是唯一一个这样做的 http 客户端:我在 Oracle Service Bus 的 http 连接器上遇到了类似的问题,它丢弃了对某些代码的响应。这是一种优化,他们认为某些代码的错误消息无关紧要。
-
你提到的Angular代码部分与HTTP状态码完全无关。
-
很确定你的意思是在 http.js 中引用 isSuccess。
-
Angular 的 $http 返回接收到的数据,不管状态码如何。向我们展示一些你如何使用它的代码。
标签: angularjs angular-promise angularjs-http