Java Http 接口对接太繁琐?试试 UniHttp 框架~

简介: 【10月更文挑战第10天】在企业级项目开发中,HTTP接口对接是一项常见且重要的任务。传统的编程式HTTP客户端(如HttpClient、Okhttp)虽然功能强大,但往往需要编写大量冗长且复杂的代码,这对于项目的可维护性和可读性都是一个挑战。幸运的是,UniHttp框架的出现为这一问题提供了优雅的解决方案。

Java Http 接口对接太繁琐?试试 UniHttp 框架~

在企业级项目开发中,HTTP接口对接是一项常见且重要的任务。传统的编程式HTTP客户端(如HttpClient、Okhttp)虽然功能强大,但往往需要编写大量冗长且复杂的代码,这对于项目的可维护性和可读性都是一个挑战。幸运的是,UniHttp框架的出现为这一问题提供了优雅的解决方案。

UniHttp框架简介

UniHttp是一个声明式的HTTP接口对接框架,它能够极大地简化HTTP请求的发送过程。使用UniHttp,开发者可以像调用本地方法一样发起HTTP请求,而无需关注请求的发送细节、参数传递、结果处理和反序列化等问题。这种框架的设计哲学是将HTTP请求的复杂性封装起来,让开发者更专注于业务逻辑的实现。

快速开始

引入依赖

首先,需要在项目的pom.xml文件中引入UniHttp的依赖:

<dependency>
    <groupId>io.github.burukeyou</groupId>
    <artifactId>uniapi-http</artifactId>
    <version>0.0.4</version>
</dependency>

对接接口

接下来,可以创建一个接口,并使用@HttpApi注解来标记。在接口中定义的方法将对应于要对接的HTTP接口。例如:

@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);
}

在这里,@GetHttpInterface@PostHttpInterface注解分别用于定义GET和POST请求,而@QueryPar@HeaderPar@BodyJsonPar注解用于指定请求的查询参数、请求头和请求体。

配置自定义的Http客户端

默认情况下,UniHttp使用的是Okhttp客户端。如果需要自定义HttpClient,可以在Spring的配置类中定义一个OkHttpClient的Bean:

@Configuration
public class CustomConfiguration {
   
    @Bean
    public OkHttpClient myOHttpClient(){
   
        return new OkHttpClient.Builder()
            .readTimeout(50, TimeUnit.SECONDS)
            .writeTimeout(50, TimeUnit.SECONDS)
            .connectTimeout(10, TimeUnit.SECONDS)
            .connectionPool(new ConnectionPool(20,10, TimeUnit.MINUTES))
            .build();
    }
}

企业级渠道对接实战

假设我们需要对接一个天气服务的所有接口,这些接口需要在请求的cookie中带上token和sessionId字段,这些字段需要通过调用特定接口获取。此外,还需要在请求头上带上一个签名字段,该字段的生成规则需要用渠道方提供的公钥对所有请求体和请求参数进行加签生成。

application.yml中配置对接渠道方的信息

channel:
  mtuan:
    url: http://127.0.0.1:8999
    appId: UUU-asd-01
    publicKey: fajdkf9492304jklfahqq

自定义该渠道方的HttpAPI注解

通过定义自定义注解和处理器,可以轻松实现上述需求。例如,可以实现一个HttpApiProcessor来处理请求前的签名、发送请求时的动态令牌获取和日志打印、响应后的数据处理等。

对接接口

使用@MTuanHttpApi注解对接具体的接口,例如获取令牌和天气情况的接口。

自定义HttpApiProcessor

通过实现HttpApiProcessor接口,可以自定义HTTP请求的生命周期钩子,例如在请求发送前对请求体进行加签、在发送请求时动态获取令牌重新构建请求体和打印日志、在发送请求后给响应对象设置code为999等。

总结

UniHttp框架通过提供声明式的HTTP接口对接方式,极大地简化了HTTP请求的发送过程。它不仅支持基本的GET、POST请求,还支持请求和响应的拦截器、自定义HTTP客户端配置等高级功能。使用UniHttp,开发者可以更加专注于业务逻辑的实现,而不是被HTTP请求的细节所困扰。如果你的项目中也需要对接第三方HTTP接口,不妨试试UniHttp框架,它可能会给你带来意想不到的便利和效率提升。

目录
相关文章
|
6天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
7天前
|
消息中间件 Java 数据库连接
Java 反射最全详解 ,框架设计必掌握!
本文详细解析Java反射机制,包括反射的概念、用途、实现原理及应用场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Java 反射最全详解 ,框架设计必掌握!
|
4天前
|
Java 开发者
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
19 4
|
10天前
|
安全 Java
在 Java 中使用实现 Runnable 接口的方式创建线程
【10月更文挑战第22天】通过以上内容的介绍,相信你已经对在 Java 中如何使用实现 Runnable 接口的方式创建线程有了更深入的了解。在实际应用中,需要根据具体的需求和场景,合理选择线程创建方式,并注意线程安全、同步、通信等相关问题,以确保程序的正确性和稳定性。
|
8天前
|
Java
Java基础(13)抽象类、接口
本文介绍了Java面向对象编程中的抽象类和接口两个核心概念。抽象类不能被实例化,通常用于定义子类的通用方法和属性;接口则是完全抽象的类,允许声明一组方法但不实现它们。文章通过代码示例详细解析了抽象类和接口的定义及实现,并讨论了它们的区别和使用场景。
|
13天前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
9天前
|
Java 测试技术 API
Java零基础-接口详解
【10月更文挑战第19天】Java零基础教学篇,手把手实践教学!
16 1
|
9天前
|
缓存 Java 数据库连接
Hibernate:Java持久层框架的高效应用
通过上述步骤,可以在Java项目中高效应用Hibernate框架,实现对关系数据库的透明持久化管理。Hibernate提供的强大功能和灵活配置,使得开发者能够专注于业务逻辑的实现,而不必过多关注底层数据库操作。
9 1
|
14天前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
27 2
|
2天前
|
存储 Java 开发者
Java中的集合框架深入解析
【10月更文挑战第32天】本文旨在为读者揭开Java集合框架的神秘面纱,通过深入浅出的方式介绍其内部结构与运作机制。我们将从集合框架的设计哲学出发,探讨其如何影响我们的编程实践,并配以代码示例,展示如何在真实场景中应用这些知识。无论你是Java新手还是资深开发者,这篇文章都将为你提供新的视角和实用技巧。
6 0