Node 老司机比较一下 httpclient 库吧 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hujianxin
V2EX    Node.js

Node 老司机比较一下 httpclient 库吧

  •  
  •   hujianxin 2016-11-11 08:06:16 +08:00 7433 次点击
    这是一个创建于 3259 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Node 刚开始看,觉着很简单,昨天写了一小程序,发现 node 下面的 httpclient 可不是一般的多,而且开发都很活跃, github star 都很高。

    老司机说一下他们之间的大体比较吧? fetch, request, superagent, axios 。

    27 条回复    2016-11-14 09:37:09 +08:00
    jkeylu
        1
    jkeylu  
       2016-11-11 08:15:17 +08:00 via Android
    以前用 needle ,自从用了 promise 后,就一直用 node-fetch 了。像 request 太庞大了,大多数功能都没机会用到
    cloud107202
        2
    cloud107202  
       2016-11-11 08:53:12 +08:00
    fetch ,配合 Promise 和 async/await 使用。 browser 端千万不要用 request
    meteor
        3
    meteor  
       2016-11-11 09:20:47 +08:00
    就用过 request
    AlloVince
        5
    lloVince  
       2016-11-11 09:53:07 +08:00
    - node-fetch: 略简陋,主要目的是为了同构和浏览器公用代码
    - request: 历史悠久,功能全, promise 还需要引入 request-promise , API 是一点点叠加上去的,没有经过完整的设计
    - superagent: 和 request 有同样问题, promise 、 log 这种基础功能都需要引入三方库
    - axios: 优点是可以实现同构, API 设计好,非常适合对接 RESTFul 服务,缺点是用例和资料偏少

    我们生产最终用的 request
    mcfog
        6
    mcfog  
       2016-11-11 09:57:51 +08:00
    request 用惯了,顺便 promise 一直用的 bluebird 也用惯了

    npm init -y
    npm i -S request bluebird cheerio

    各种小脚本的默认起手式

    顺便数据复杂的话再来个 lodash
    metrue
        7
    metrue  
       2016-11-11 10:04:00 +08:00 via iPhone
    fetch
    lylijincheng
        8
    lylijincheng  
       2016-11-11 10:15:20 +08:00
    isomorphic-fetch
    xieren58
        9
    xieren58  
       2016-11-11 10:48:34 +08:00
    got
    xieren58
        10
    xieren58  
       2016-11-11 10:49:02 +08:00
    razor1895
        11
    razor1895  
       2016-11-11 11:18:41 +08:00
    isomorphic-fetch +1
    hujianxin
        12
    hujianxin  
    OP
       2016-11-11 11:36:42 +08:00
    谢谢各位,不能一一回复。

    @AlloVince 谢谢,很有帮助。
    hujianxin
        13
    hujianxin  
    OP
       2016-11-11 11:39:01 +08:00
    @mcfog 现在 es6 都挺流行了, lodash 用处不大了吧
    smallpath
        14
    smallpath  
       2016-11-11 11:43:41 +08:00
    superagent 和 axios 都是同构的, axios 功能全一点,前端用 fetch ,后端 axios
    hujianxin
        15
    hujianxin  
    OP
       2016-11-11 11:47:13 +08:00
    @smallpath superagent 与 axios 还是不同的,我试了一下,将 axios 换成 superagent 之后, response 内容不同,代码得该。看了一下发现还是更喜欢 axios 一点。

    其实前后端都用 fetch 也可以,这样的话会更统一一点吧。
    mcfog
        16
    mcfog  
       2016-11-11 12:31:49 +08:00
    @hujianxin ES6 并没有取代多少 lodash 的东西吧
    jin5354
        17
    jin5354  
       2016-11-11 12:39:10 +08:00
    fetch 是标准, axios 语法糖多,我用 axios
    leopku
        18
    leopku  
       2016-11-11 13:44:54 +08:00
    axios +1

    有机会试试 got
    wobuhuicode
        19
    wobuhuicode  
       2016-11-11 14:12:17 +08:00
    request ! request ! request !
    主要是旧代码用着懒得换了……
    smallpath
        20
    smallpath  
       2016-11-11 14:12:53 +08:00
    @hujianxin axios 功能比 superagent 多,例如截取器,不过 response 内容倒是 axios 不怎么规范,大家都是叫 body 就它一个叫 data 。

    fetch 的话前端是用 fetch ,后端不是 fetch 而是 node-fetch ,并不是同构,需要打包两份
    magicdawn
        21
    magicdawn  
       2016-11-11 14:22:52 +08:00
    从 superagent 切到了 request-promise, 因为这个 https://github.com/visionmedia/superagent/issues/1069
    我建议 node 端都用 request, 一个很简单的 trick, 自动读取 http_proxy / https_proxy 环境变量...等等
    magicdawn
        22
    magicdawn  
       2016-11-11 14:25:38 +08:00
    现在 GitHub 都有 superagent owner / superagent contributor blabla 了...
    hujianxin
        23
    hujianxin  
    OP
       2016-11-11 23:51:12 +08:00
    @smallpath 谢谢老司机,很有帮助
    shyling
        24
    shyling  
       2016-11-12 18:54:36 +08:00 via iPhone
    request
    loy6491
        25
    loy6491  
       2016-11-13 11:46:34 +08:00 via iPhone
    @hujianxin 为啥 es6 就不需要 lodash 了
    helloleo
        26
    helloleo  
       2016-11-13 17:30:23 +08:00
    solee
        27
    solee  
       2016-11-14 09:37:09 +08:00
    koa-request 作者封装的 request 。从来没用过其他的了~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3746 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 00:44 PVG 08:44 LAX 17:44 JFK 20:44
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86