hujianxin
V2EX  ›  Node.js

Node 老司机比较一下 httpclient 库吧

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

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

    npm init -y
    npm i -S request bluebird cheerio

    各种小脚本的默认起手式

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

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

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

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

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