【UniHttp系列】Java開源第三方介面對接框架介紹

burukeyou發表於2024-07-20

前言

從企業級專案來說,如果你專案裡還在用傳統的程式設計式Http客戶端比如HttpClient、Okhttp去直接對接第三方Http介面,
那麼你專案一定充斥著大量的對接邏輯和程式碼, 並且針對不同的對接渠道方需要每次封裝一次呼叫的簡化,
一旦封裝不好系統將會變得難以維護,難以閱讀, 甚至不同的開發同學會用自己的方式用不同的Http客戶端用不同的封裝邏輯去對接介面,
這種情況一般發生於專案換了維護者,技術負責人也沒把控程式碼質量和規範所導致

如果你的專案裡也存在這樣的問題或者需要解決這樣的問題, 那麼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下再次感謝!

相關文章