方便处理文件批量上传和 Cookie, Forest 1.5.0-RC1 发布 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DtFlys
V2EX    开源软件

方便处理文件批量上传和 Cookie, Forest 1.5.0-RC1 发布

  •  
  •   DtFlys 2020-12-18 14:15:12 +08:00 1965 次点击
    这是一个创建于 1759 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Forest 是一款开源的 Java HTTP 客户端框架,它能够将 HTTP 的所有请求信息(包括 URL 、Header 以及 Body 等信息)绑定到您自定义的 Interface 方法上,能够通过调用本地接口方法的方式发送 HTTP 请求。

    使用 Forest 就像使用类似 Dubbo 那样的 RPC 架一样,只需要定义接口,调用接口即可,不必关心具体发送 HTTP 请求的细节。同时将 HTTP 请求信息与业务代码解耦,方便您统一管理大量 HTTP 的 URL 、Header 等信息。而请求的调用方完全不必在意 HTTP 的具体内容,即使该 HTTP 请求信息发生变更,大多数情况也不需要修改调用发送请求的代码。

    项目主页:http://forest.dtflyx.com

    项目仓库:https://gitee.com/dt_flys/forest

    这次 1.5.0-RC1 版本新增了文件批量上传,以及处理 Cookie 的特性

    多文件批量上传

     /** * 上传 Map 包装的文件列表 * 其中 ${_key} 代表 Map 中每一次迭代中的键值 */ @Post("/upload") ForestRequest<Map> uploadByteArrayMap(@DataFile(value = "file", fileName = "${_key}") Map<String, byte[]> byteArrayMap); /** * 上传 List 包装的文件列表 * 其中 ${_index} 代表每次迭代 List 的循环计数(从零开始计) */ @Post("/upload") ForestRequest<Map> uploadByteArrayList(@DataFile(value = "file", fileName = "test-img-${_index}.jpg") List<byte[]> byteArrayList); 

    处理 Cookie

    在请求接口的参数列表中加入 OnSaveCookie 和 OnLoadCookie 回调函数

    OnSaveCookie: 在请求响应成功后,需要保存 Cookie 时调用该回调函数

    OnLoadCookie: 在发送请求钱,需要加载 Cookie 时调用该回调函数

    /** * 登入接口(需要接受 Cookie) */ @Post("http://localhost:8080/login?username=foo") ForestResponse testLogin(@Body UserLoginDTO userLogin, OnSaveCookie onSaveCookie); /** * 登入后测试接口(需要传入 Cookie) */ @Post("http://localhost:8080/test") ForestResponse testAfterLogin(OnLoadCookie onLoadCookie); 

    保存和传送 Cookie 的代码

    AtomicReference<ForestCookie> cookieAtomic = new AtomicReference<>(null); // 调用登入接口 testClient.testLogin(userLogin, (request, cookies) -> { // 将服务端传来的 Cookie 放入 cookieAtomic cookieAtomic.set(cookies.allCookies().get(0)); }); // 获取 Cookie ForestCookie cookie = cookieAtomic.get(); // 调用登入后的测试接口 ForestResponse respOnse= testClient.testAfterLogin((request, cookies) -> { // 将之前调用登入接口获得的 Cookie 传入请求发送到服务端 cookies.addCookie(cookie); }); 
    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2793 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 13:15 PVG 21:15 LAX 06:15 JFK 09:15
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86