V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
hujianxin
V2EX  ›  Node.js

Node 老司机比较一下 httpclient 库吧

  •  
  •   hujianxin · Nov 11, 2016 · 7810 views
    This topic created in 3454 days ago, the information mentioned may be changed or developed.

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

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

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

    我们生产最终用的 request
    mcfog
        6
    mcfog  
       Nov 11, 2016
    request 用惯了,顺便 promise 一直用的 bluebird 也用惯了

    npm init -y
    npm i -S request bluebird cheerio

    各种小脚本的默认起手式

    顺便数据复杂的话再来个 lodash
    metrue
        7
    metrue  
       Nov 11, 2016 via iPhone
    fetch
    lylijincheng
        8
    lylijincheng  
       Nov 11, 2016
    isomorphic-fetch
    xieren58
        9
    xieren58  
       Nov 11, 2016
    got
    xieren58
        10
    xieren58  
       Nov 11, 2016
    razor1895
        11
    razor1895  
       Nov 11, 2016
    isomorphic-fetch +1
    hujianxin
        12
    hujianxin  
    OP
       Nov 11, 2016
    谢谢各位,不能一一回复。

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

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

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

    fetch 的话前端是用 fetch ,后端不是 fetch 而是 node-fetch ,并不是同构,需要打包两份
    magicdawn
        21
    magicdawn  
       Nov 11, 2016
    从 superagent 切到了 request-promise, 因为这个 https://github.com/visionmedia/superagent/issues/1069
    我建议 node 端都用 request, 一个很简单的 trick, 自动读取 http_proxy / https_proxy 环境变量...等等
    magicdawn
        22
    magicdawn  
       Nov 11, 2016
    现在 GitHub 都有 superagent owner / superagent contributor blabla 了...
    hujianxin
        23
    hujianxin  
    OP
       Nov 11, 2016
    @smallpath 谢谢老司机,很有帮助
    shyling
        24
    shyling  
       Nov 12, 2016 via iPhone
    request
    loy6491
        25
    loy6491  
       Nov 13, 2016 via iPhone
    @hujianxin 为啥 es6 就不需要 lodash 了
    helloleo
        26
    helloleo  
       Nov 13, 2016
    solee
        27
    solee  
       Nov 14, 2016
    koa-request 作者封装的 request 。从来没用过其他的了~
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3306 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 13:22 · PVG 21:22 · LAX 06:22 · JFK 09:22
    ♥ Do have faith in what you're doing.