模板表达式在使用的时候特别方便,举个栗子
@Request( url = "${0}/send?un=${1}&pw=${2}&ph=${3}&ct=${4}", type = "get", dataType = "json" ) public Map send( String base, String userName, String password, String phone, String content );上述是用序号下标进行取值,也可以通过名字进行取值:
@Request( url = "${base}/send?un=${un}&pw=${pw}&ph=${3}&ct=${ct}", type = "get", dataType = "json" ) public Map send( @DataVariable("base") String base, @DataVariable("un") String userName, @DataVariable("pw") String password, @DataVariable("ph") String phone, @DataVariable("ct") String content );甚至于可以这样简化写:
@Request( url = "${base}/send", type = "get", dataType = "json" ) public Map send( @DataVariable("base") String base, @DataParam("un") String userName, @DataParam("pw") String password, @DataParam("ph") String phone, @DataParam("ct") String content );以上三种写法是等价的
当然你也可以把参数绑定到header和body里去,你甚至于可以用一些表达式简单的把对象序列化成json或者xml:
@Request( url = "${base}/pay", contentType = "application/json", type = "post", dataType = "json", headers = {"Authorization: ${1}"}, data = "${json($0)}" ) public PayResponse pay(PayRequest request, String auth);当然数据绑定这块详情请参阅文档
4.2 对HTTPS的支持以前用其他http框架处理https的时候,总觉得特别麻烦,尤其是双向证书。每次碰到问题也只能去baidu。然后根据别人的经验来修改自己的代码。
Forest对于这方面也想的很周到,底层完美封装了对https单双向证书的支持。也是只要通过简单的配置就能迅速完成。举个双向证书栗子:
@Request( url = "${base}/pay", contentType = "application/json", type = "post", dataType = "json", keyStore = "pay-keystore", data = "${json($0)}" ) public PayResponse pay(PayRequest request);其中pay-keystore对应着application.yml里的ssl-key-stores
forest: ... ssl-key-stores: - id: pay-keystore file: test.keystore keystore-pass: 123456 cert-pass: 123456 protocols: SSLv3这样设置,就ok了,剩下的,就是本地代码形式的调用了。
5.最后Forest有很多其他的功能设定,如果感兴趣的同学还请仔细去阅读文档和示例。
但是我想说的是,相信看到这里,很多人一定会说,这不就是Feign吗?
我在开发Spring Cloud项目的时候,也用过一段时间Feign,个人感觉Forest的确在配置和用法上和Feign的设计很像,但Feign的角色更多是作为Spring Cloud生态里的一个成员。充当RPC通信的角色,其承担的不仅是http通讯,还要对注册中心下发的调用地址进行负载均衡。
而Forest这个开源项目其定位则是一个高阶的http工具,主打友好和易用性。从使用角度出发,个人感觉Forest配置性更加简单直接。提供的很多功能也能解决很多人的痛点。
开源精神难能可贵,好的开源需要大家的添砖加瓦和支持。希望这篇文章能给大家在选择http客户端框架时带来一个新的选择:Forest
联系作者微信关注 「元人部落」:
关注后回复 "资料" 免费获取50G的技术资料,包含一整套企业级微服务课程以及一套秒杀课程