【UniHttp系列】Java开源第三方接口对接框架先容

打印 上一主题 下一主题

主题 852|帖子 852|积分 2558

前言

从企业级项目来说,如果你项目里还在用传统的编程式Http客户端比如HttpClient、Okhttp去直接对接第三方Http接口,
那么你项目一定充斥着大量的对接逻辑和代码, 并且针对不同的对接渠道方需要每次封装一次调用的简化,
一旦封装不好系统将会变得难以维护,难以阅读, 甚至不同的开发同学会用自己的方式用不同的Http客户端用不同的封装逻辑去对接接口,
这种情况一般发生于项目换了维护者,技术负责人也没把控代码质量和规范所导致
如果你的项目里也存在这样的题目大概需要办理这样的题目, 那么UniHttp就是你的版本答案。
2、快速开始

2.1、引入依赖
  1.     <dependency>
  2.       <groupId>io.github.burukeyou</groupId>
  3.       <artifactId>uniapi-http</artifactId>
  4.       <version>0.0.4</version>
  5.     </dependency>
复制代码
2.2、对接接口

首先随便创建一个接口,然后在接口上标记@HttpApi注解,然后指定哀求的域名url, 然后就可以在方法上去设置对接哪个接口。
比如下面两个方法的设置则对接了以下两个接口
GET http://localhost:8080/getUser和
POST http://localhost:8080/addUser
方法返回值界说成Http响应body对应的类型即可,默认会利用fastjson反序列化Http响应body的值为该类型对象。
  1. @HttpApi(url = "http://localhost:8080")
  2. interface UserHttpApi {
  3.    
  4.    @GetHttpInterface("/getUser")
  5.    BaseRsp<String> getUser(@QueryPar("name") String param,@HeaderPar("userId") Integer id);
  6.    
  7.    @PostHttpInterface("/addUser")
  8.    BaseRsp<Add4DTO> addUser(@BodyJsonPar Add4DTO req);
  9.    
  10. }
复制代码
@QueryPar 表现将参数值放到Http哀求的查询参数内
@HeaderPar    表现将参数值放到Http哀求的哀求头里
@BodyJsonPar 表现将参数值放到Http哀求body内,并且content-type是application/json
1、getUser方法最终构建的Http哀求报文为
  1. GET http://localhost:8080/getUser?name=param
  2. Header:
  3.     userId: id
复制代码
2、addUser最终构建的Http哀求报文为
  1.         POST:  http://localhost:8080/addUser
  2.         Header:
  3.             Content-Type:   application/json
  4.         Body:
  5.             {"id":1,"name":"jay"}
复制代码
2.3、声明界说的HttpAPI的包扫描路径

在spring的设置类上利用@UniAPIScan注解标记界说的@HttpAPI的包扫描路径,会自动为标记了@HttpApi接口生成代理对象并且注入到Spring容器中,
之后只需要像利用Spring的其他bean一样,依赖注入利用即可
  1. @UniAPIScan("com.xxx.demo.api")
  2. @SpringBootApplication
  3. public class DemoApplication {
  4.     public static void main(String[] args) {
  5.         SpringApplication.run(DemoApplication.class,args);
  6.     }
  7. }
复制代码
2.4 依赖注入利用即可

这样我们就可以像调用本地方法一样去执行长途PRC的http调用
  1. @Service
  2. class UserAppService {
  3.    
  4.     @Autowired
  5.     private UserHttpApi userHttpApi;
  6.    
  7.     public void doSomething(){
  8.         userHttpApi.getUser("jay",3);
  9.     }
  10. }
复制代码
最后

gitHub代码地址
新人开源项目,如果觉得项目有效,可以star下再次感谢!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

拉不拉稀肚拉稀

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表