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

cnblogs 2024-07-20 08:09:01 阅读 73

前言

从企业级项目来说,如果你项目里还在用传统的编程式Http客户端比如HttpClient、Okhttp去直接对接第三方Http接口,

那么你项目一定充斥着大量的对接逻辑和代码, 并且针对不同的对接渠道方需要每次封装一次调用的简化,

一旦封装不好系统将会变得难以维护,难以阅读, 甚至不同的开发同学会用自己的方式用不同的Http客户端用不同的封装逻辑去对接接口,

这种情况一般发生于项目换了维护者,技术负责人也没把控代码质量和规范所导致

如果你的项目里也存在这样的问题或者需要解决这样的问题, 那么<code>UniHttp就是你的版本答案。

2、快速开始

2.1、引入依赖

<dependency>

<groupId>io.github.burukeyou</groupId>

<artifactId>uniapi-http</artifactId>

<version>0.0.4</version>

</dependency>

2.2、对接接口

首先随便创建一个接口,然后在接口上标记@HttpApi注解,然后指定请求的域名url, 然后就可以在方法上去配置对接哪个接口。

比如下面两个方法的配置则对接了以下两个接口

GET http://localhost:8080/getUser和

POST http://localhost:8080/addUser

方法返回值定义成Http响应body对应的类型即可,默认会使用fastjson反序列化Http响应body的值为该类型对象。

@HttpApi(url = "http://localhost:8080")

interface UserHttpApi {

@GetHttpInterface("/getUser")

BaseRsp<String> getUser(@QueryPar("name") String param,@HeaderPar("userId") Integer id);

@PostHttpInterface("/addUser")

BaseRsp<Add4DTO> addUser(@BodyJsonPar Add4DTO req);

}

@QueryPar 表示将参数值放到Http请求的查询参数内

@HeaderPar 表示将参数值放到Http请求的请求头里

@BodyJsonPar 表示将参数值放到Http请求body内,并且content-type是application/json

1、getUser方法最终构建的Http请求报文为

GET http://localhost:8080/getUser?name=param

Header:

userId: id

2、addUser最终构建的Http请求报文为

POST: http://localhost:8080/addUser

Header:

Content-Type: application/json

Body:

{"id":1,"name":"jay"}

2.3、声明定义的HttpAPI的包扫描路径

在spring的配置类上使用@UniAPIScan注解标记定义的@HttpAPI的包扫描路径,会自动为标记了@HttpApi接口生成代理对象并且注入到Spring容器中,

之后只需要像使用Spring的其他bean一样,依赖注入使用即可

@UniAPIScan("com.xxx.demo.api")

@SpringBootApplication

public class DemoApplication {

public static void main(String[] args) {

SpringApplication.run(DemoApplication.class,args);

}

}

2.4 依赖注入使用即可

这样我们就可以像调用本地方法一样去执行远程PRC的http调用

@Service

class UserAppService {

@Autowired

private UserHttpApi userHttpApi;

public void doSomething(){

userHttpApi.getUser("jay",3);

}

}

最后

gitHub代码地址

新人开源项目,如果觉得项目有用,可以star下再次感谢!


上一篇: python技术简介(三)

下一篇: 集群及分布式定时任务中间件MEE_TIMED

本文标签

接口    项目    getUser    对接    Http   


声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。