Angular 学起来真是太难了, 国内资料少, 用 G 搜呢,总感觉表达不准确,搜不到好的结果

2021-09-09 22:31:45 +08:00
 loveuer

请教一下大佬们, 我现在有一个情况是这样的,后端我统一 返回格式是:

{
  "status": 200,
  "msg: "xxx success",
  "data": any
}

我想通过 拦截器 或者在 service 里面将 status 判断好了, 给 component 的数据就 仅是上面的 data, 出错就给个 默认值 这样的效果,但我实在不知道怎么实现了, 还请大家指点一二。

5644 次点击
所在节点    Angular
34 条回复
EPr2hh6LADQWqRVH
2021-09-09 22:36:47 +08:00
你这功能和框架没一毛钱关系啊,把框架都忘了,自己再想想。
NCry
2021-09-09 22:40:24 +08:00
拦截器那边统一判断 status 的值,然后把返回结果过滤一下不就行了,这确实和 angular 无关
Oktfolio
2021-09-09 22:41:34 +08:00
loveuer
2021-09-09 22:44:09 +08:00
@avastms emmmm,直接用 subscribe 读出来,是可以,但是后续怎么搞呢,自己用 promise 包它么?我主要还是后端,平时没那么深入前端,所以说学下全套解决方案 angular,见笑了见笑了😢😢😢
wunonglin
2021-09-09 22:44:49 +08:00
https://angular.io/guide/http#intercepting-requests-and-responses

这个章节不是教你怎么使用拦截器了么。。。
Kimen
2021-09-09 22:50:57 +08:00
像 axios 就有拦截器啊,这跟是不是 Angular 没关系吧
loveuer
2021-09-09 22:55:56 +08:00
@wunonglin 额,谢谢大佬回复,这个文档我看了,或许因为我不够仔细没看到,return next ( req )是一个 rxjs 的 obv,这里面怎么操作数据啊。请不要笑我菜😰😰😰
wunonglin
2021-09-09 23:04:25 +08:00
@loveuer #7 建议不要在拦截器做返回数据操作。在 service 做就好,具体原因你深入就知道了。一会我写个 demo 你就知道了
loveuer
2021-09-09 23:06:44 +08:00
@wunonglin 非常感谢大佬😁
wunonglin
2021-09-09 23:15:09 +08:00
@loveuer #9

https://stackblitz.com/edit/angular-ivy-6xpbns?file=src%2Fapp%2Fapp.component.html

对于外部进来的数据,都在 service 层处理好,component 负责调用 service 的方法。

发送数据也是如此
wunonglin
2021-09-09 23:16:13 +08:00
@loveuer #9 当然你也可以继承 HttpClient,二开它,就看你需不需要了
kev1nzh
2021-09-09 23:37:59 +08:00
我这边是 service 层单独处理的,网上的 ng 相关资料其实挺多的。。
elone
2021-09-10 00:45:21 +08:00
ng 只需要看官方和 stackoverflow 就可以了。资料还是很多的。
find456789
2021-09-10 00:48:55 +08:00
来学 vue 、react 吧
littleshy
2021-09-10 08:53:23 +08:00
说 Angular 也有关系,楼主应该是要说 Angular 的 Http 拦截器。
在 interceptor 里克隆一个 response,替换掉 body 就行了啊。
skiy
2021-09-10 09:02:10 +08:00
中文教程直接上 https://angular.cn 啊,也是官方的。说得清清楚楚。唉,我也快忘记了。
cslive
2021-09-10 09:05:59 +08:00
forbreak
2021-09-10 09:15:37 +08:00
看看这个 https://angular.cn/guide/http#intercepting-requests-and-responses angular 中文文档做的很好了,遵循最佳实践,基本遇到的问题官网上都有写。 还要啥资料,没事多看看官方文档。
meshell
2021-09-10 09:36:04 +08:00
要不看下我刚不久写得: https://loocode.com/post/10198 哈哈
nzbin
2021-09-10 09:38:18 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/800937

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX