V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hujianxin
V2EX  ›  Node.js

Node 老司机比较一下 httpclient 库吧

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

    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
    AlloVince  
       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   ·   实用小工具   ·   2919 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:35 · PVG 20:35 · LAX 04:35 · JFK 07:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.