V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
molvqingtai
V2EX  ›  JavaScript

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

  •  1
     
  •   molvqingtai · 2022-03-23 10:52:05 +08:00 · 1834 次点击
    这是一个创建于 981 天前的主题,其中的信息可能已经有所发展或是发生改变。

    什么是 resreq?

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

    简单示例

    Imgur

    使用中间件

    Imgur

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

    项目地址

    https://github.com/molvqingtai/resreq

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