drealism
V2EX  ›  Angular

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

  •  
  •   drealism · Sep 9, 2021 · 6861 views
    This topic created in 1887 days ago, the information mentioned may be changed or developed.

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

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

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

    34 replies  •  2021-09-21 12:07:02 +08:00
    EPr2hh6LADQWqRVH
    EPr2hh6LADQWqRVH
    Sep 9, 2021
    1
    你这功能和框架没一毛钱关系啊,把框架都忘了,自己再想想。
    NCry
    NCry
    Sep 9, 2021
    2
    拦截器那边统一判断 status 的值,然后把返回结果过滤一下不就行了,这确实和 angular 无关
    drealism
    drealism
    OP
    Sep 9, 2021 via Android
    4
    @avastms emmmm,直接用 subscribe 读出来,是可以,但是后续怎么搞呢,自己用 promise 包它么?我主要还是后端,平时没那么深入前端,所以说学下全套解决方案 angular,见笑了见笑了😢😢😢
    shakaraka
    shakaraka
    Sep 9, 2021❤️2
    5
    https://angular.io/guide/http#intercepting-requests-and-responses

    这个章节不是教你怎么使用拦截器了么。。。
    Kimen
    Kimen
    Sep 9, 2021
    6
    像 axios 就有拦截器啊,这跟是不是 Angular 没关系吧
    drealism
    drealism
    OP
    Sep 9, 2021 via Android
    7
    @wunonglin 额,谢谢大佬回复,这个文档我看了,或许因为我不够仔细没看到,return next ( req )是一个 rxjs 的 obv,这里面怎么操作数据啊。请不要笑我菜😰😰😰
    shakaraka
    shakaraka
    Sep 9, 2021
    8
    @loveuer #7 建议不要在拦截器做返回数据操作。在 service 做就好,具体原因你深入就知道了。一会我写个 demo 你就知道了
    drealism
    drealism
    OP
    Sep 9, 2021 via Android
    9
    @wunonglin 非常感谢大佬😁
    shakaraka
    shakaraka
    Sep 9, 2021
    10
    @loveuer #9

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

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

    发送数据也是如此
    shakaraka
    shakaraka
    Sep 9, 2021
    11
    @loveuer #9 当然你也可以继承 HttpClient,二开它,就看你需不需要了
    kev1nzh
    kev1nzh
    Sep 9, 2021
    12
    我这边是 service 层单独处理的,网上的 ng 相关资料其实挺多的。。
    tongyuelong
    tongyuelong
    Sep 10, 2021
    13
    ng 只需要看官方和 stackoverflow 就可以了。资料还是很多的。
    find456789
    find456789
    Sep 10, 2021
    14
    来学 vue 、react 吧
    littleshy
    littleshy
    Sep 10, 2021❤️1
    15
    说 Angular 也有关系,楼主应该是要说 Angular 的 Http 拦截器。
    在 interceptor 里克隆一个 response,替换掉 body 就行了啊。
    skiy
    skiy
    Sep 10, 2021
    16
    中文教程直接上 https://angular.cn 啊,也是官方的。说得清清楚楚。唉,我也快忘记了。
    forbreak
    forbreak
    Sep 10, 2021
    18
    看看这个 https://angular.cn/guide/http#intercepting-requests-and-responses angular 中文文档做的很好了,遵循最佳实践,基本遇到的问题官网上都有写。 还要啥资料,没事多看看官方文档。
    meshell
    meshell
    Sep 10, 2021
    19
    要不看下我刚不久写得: https://loocode.com/post/10198 哈哈
    nzbin
    nzbin
    Sep 10, 2021
    20
    plk403
    plk403
    Sep 10, 2021
    21
    一般 axios 封装里好像都有 你可以看下..
    zhuangzhuang1988
    zhuangzhuang1988
    Sep 10, 2021
    22
    最好不要用拦截器 太坑了.
    NoDocCat
    NoDocCat
    Sep 10, 2021
    23
    你要看的是 rxjs, 而不是 Angular. 实际上就是加个 map 操作符的事
    rrfeng
    rrfeng
    Sep 10, 2021 via Android
    24
    本质上是英语不好。
    Angular 的中文文档太少了。
    另外要学 ts + rxjs 可能新手没意识到这俩知识点。

    rxjs 是真好用。
    xiaopang132
    xiaopang132
    Sep 10, 2021 via iPhone
    25
    如果是学习过程,建议直接找官方文档,然后翻译,遇到不太懂的就看英文原文。
    jguo
    jguo
    Sep 10, 2021
    26
    angular 是最好学的,官方文档什么都讲了
    xingguang
    xingguang
    Sep 10, 2021
    27
    建议不要这样玩,我曾经深受其害,大致业务简化下就是想通过后端返回一个特殊的 code 码,然后返回做不同操作之类的东西,可惜我们的请求曾给拦截了,我们拿不到,恶心了我好久,最后在请求曾做了这个特殊判断,十分不优雅
    xingguang
    xingguang
    Sep 10, 2021
    28
    @xingguang #27,我建议调用的时候把 code 和 data 都返回。
    wszgrcy
    wszgrcy
    Sep 10, 2021
    29
    有问题可以圈我,不过只会讲技术级别(至于你要实现的功能是否蛋疼不管的....)
    zarvin
    zarvin
    Sep 10, 2021
    30
    用 vue
    nzbin
    nzbin
    Sep 10, 2021
    31
    @xingguang 可以用白名单处理,也可以用更高级的抽象,一般来说拦截的数据够用了
    shilianmlxg
    shilianmlxg
    Sep 10, 2021
    32
    @rrfeng 请问大佬 求 rxjs 上手教程。比如想在 react 里用 rxjs 之类的 /。
    gaigechunfeng
    gaigechunfeng
    Sep 11, 2021
    33
    那为什么要学呢?
    lolizeppelin
    lolizeppelin
    Sep 21, 2021
    34
    我真心觉得,水平不行的人用 angluar 才是最好的选择,就是入门麻烦一点点.

    对比之前写的 react 代码,发现我自己这种水平完全把控不住代码写着写着就瞎几把写了
    反观 angluar..真是清清楚楚.就是啰啰嗦嗦不漂亮
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1150 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 108ms · UTC 17:54 · PVG 01:54 · LAX 09:54 · JFK 12:54
    ♥ Do have faith in what you're doing.