V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
molvqingtai

一个基于 fetch 的洋葱模型 http 客户端

  •  1
     
  •   molvqingtai · Mar 23, 2022 · 2344 views
    This topic created in 1509 days ago, the information mentioned may be changed or developed.

    什么是 resreq?

    它是一个基于 fetch 的现代 http 客户端,因为它在内部使用洋葱模型实现,因此您可以使用中间件优雅地拦截请求和响应。

    简单示例

    Imgur

    使用中间件

    Imgur

    相比 axios 等库请求响应拦截要分开写在两个函数,它的优点是使用中间件 resreq.use() 一个方法搞定,如果你使用过 koa 应该很熟悉这种套路。

    项目地址

    https://github.com/molvqingtai/resreq

    5 replies    2022-04-07 09:55:27 +08:00
    KouShuiYu
        1
    KouShuiYu  
       Mar 24, 2022
    感觉实际场景没这么复杂,用 fetch 的大部分都是前端,这还要解释什么是洋葱模型,
    我之前也写了一个,拦截请求和响应用的两个函数,https://github.com/ckpack/fetch-helper
    molvqingtai
        2
    molvqingtai  
    OP
       Mar 24, 2022 via Android
    @KouShuiYu 主要是为了解耦,能把错误处理,刷新 token ,mock 数据 分成一个一个的中间件,相比使用请求前后两个 hooks 方式要优雅得多
    molvqingtai
        3
    molvqingtai  
    OP
       Mar 24, 2022 via Android
    前端请求处理复杂度确实不高,但是 node 17 已经支持 fetch ,以后 node 端也可以平滑使用 fetch ,多一种更轻量化的选择
    Envov
        4
    Envov  
       Apr 7, 2022 via iPhone
    比较好奇为什么要在 use 里面使用 curry
    molvqingtai
        5
    molvqingtai  
    OP
       Apr 7, 2022 via Android
    @Envov 抄的 redux 的实现,相比 koa 这是方式内部实现只需要一句代码,个人认为比较优雅
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2988 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 599ms · UTC 08:39 · PVG 16:39 · LAX 01:39 · JFK 04:39
    ♥ Do have faith in what you're doing.