请教一下大佬们, 我现在有一个情况是这样的,后端我统一 返回格式是:
{ "status": 200, "msg: "xxx success", "data": any }
我想通过 拦截器 或者在 service 里面将 status 判断好了, 给 component 的数据就 仅是上面的 data, 出错就给个 默认值 这样的效果,但我实在不知道怎么实现了, 还请大家指点一二。
![]() | 1 EPr2hh6LADQWqRVH 2021-09-09 22:36:47 +08:00 你这功能和框架没一毛钱关系啊,把框架都忘了,自己再想想。 |
![]() | 2 NCry 2021-09-09 22:40:24 +08:00 拦截器那边统一判断 status 的值,然后把返回结果过滤一下不就行了,这确实和 angular 无关 |
![]() | 3 Oktfolio 2021-09-09 22:41:34 +08:00 |
![]() | 4 loveuer OP @avastms emmmm,直接用 subscribe 读出来,是可以,但是后续怎么搞呢,自己用 promise 包它么?我主要还是后端,平时没那么深入前端,所以说学下全套解决方案 angular,见笑了见笑了 |
![]() | 5 shakaraka PRO ![]() |
![]() | 6 Kimen 2021-09-09 22:50:57 +08:00 像 axios 就有拦截器啊,这跟是不是 Angular 没关系吧 |
![]() | 7 loveuer OP @wunonglin 额,谢谢大佬回复,这个文档我看了,或许因为我不够仔细没看到,return next ( req )是一个 rxjs 的 obv,这里面怎么操作数据啊。请不要笑我菜 |
![]() | 8 shakaraka PRO @loveuer #7 建议不要在拦截器做返回数据操作。在 service 做就好,具体原因你深入就知道了。一会我写个 demo 你就知道了 |
![]() | 10 shakaraka PRO @loveuer #9 https://stackblitz.com/edit/angular-ivy-6xpbns?file=src%2Fapp%2Fapp.component.html 对于外部进来的数据,都在 service 层处理好,component 负责调用 service 的方法。 发送数据也是如此 |
![]() | 12 kev1nzh 2021-09-09 23:37:59 +08:00 我这边是 service 层单独处理的,网上的 ng 相关资料其实挺多的。。 |
![]() | 13 elone 2021-09-10 00:45:21 +08:00 ng 只需要看官方和 stackoverflow 就可以了。资料还是很多的。 |
14 find456789 2021-09-10 00:48:55 +08:00 来学 vue 、react 吧 |
![]() | 15 littleshy 2021-09-10 08:53:23 +08:00 ![]() 说 Angular 也有关系,楼主应该是要说 Angular 的 Http 拦截器。 在 interceptor 里克隆一个 response,替换掉 body 就行了啊。 |
![]() | 16 skiy 2021-09-10 09:02:10 +08:00 中文教程直接上 https://angular.cn 啊,也是官方的。说得清清楚楚。唉,我也快忘记了。 |
17 cslive 2021-09-10 09:05:59 +08:00 |
18 forbreak 2021-09-10 09:15:37 +08:00 看看这个 https://angular.cn/guide/http#intercepting-requests-and-responses angular 中文文档做的很好了,遵循最佳实践,基本遇到的问题官网上都有写。 还要啥资料,没事多看看官方文档。 |
![]() | 19 meshell 2021-09-10 09:36:04 +08:00 要不看下我刚不久写得: https://loocode.com/post/10198 哈哈 |
![]() | 20 nzbin 2021-09-10 09:38:18 +08:00 可以参考 ng-matero 的多重拦截器配置,https://github.com/ng-matero/ng-matero/tree/master/src/app/core/interceptors |
![]() | nbsp; 21 plk403 2021-09-10 09:45:26 +08:00 一般 axios 封装里好像都有 你可以看下.. |
![]() | 22 zhuangzhuang1988 2021-09-10 09:46:55 +08:00 最好不要用拦截器 太坑了. |
23 NoDocCat 2021-09-10 11:27:02 +08:00 你要看的是 rxjs, 而不是 Angular. 实际上就是加个 map 操作符的事 |
![]() | 24 rrfeng 2021-09-10 11:30:03 +08:00 via Android 本质上是英语不好。 Angular 的中文文档太少了。 另外要学 ts + rxjs 可能新手没意识到这俩知识点。 rxjs 是真好用。 |
![]() | 25 xiaopang132 2021-09-10 13:48:26 +08:00 via iPhone 如果是学习过程,建议直接找官方文档,然后翻译,遇到不太懂的就看英文原文。 |
26 jguo 2021-09-10 14:11:06 +08:00 angular 是最好学的,官方文档什么都讲了 |
![]() | 27 xingguang 2021-09-10 17:47:00 +08:00 建议不要这样玩,我曾经深受其害,大致业务简化下就是想通过后端返回一个特殊的 code 码,然后返回做不同操作之类的东西,可惜我们的请求曾给拦截了,我们拿不到,恶心了我好久,最后在请求曾做了这个特殊判断,十分不优雅 |
29 wszgrcy 2021-09-10 18:00:20 +08:00 有问题可以圈我,不过只会讲技术级别(至于你要实现的功能是否蛋疼不管的....) |
30 zarvin 2021-09-10 18:06:47 +08:00 用 vue |
![]() | 32 shilianmlxg 2021-09-10 23:31:27 +08:00 @rrfeng 请问大佬 求 rxjs 上手教程。比如想在 react 里用 rxjs 之类的 /。 |
![]() | 33 gaigechunfeng 2021-09-11 17:03:22 +08:00 那为什么要学呢? |
34 lolizeppelin 2021-09-21 12:07:02 +08:00 我真心觉得,水平不行的人用 angluar 才是最好的选择,就是入门麻烦一点点. 对比之前写的 react 代码,发现我自己这种水平完全把控不住代码写着写着就瞎几把写了 反观 angluar..真是清清楚楚.就是嗦嗦不漂亮 |