当前位置: 首页 > article >正文

UniHttp框架直接对接第三方Http接口

引入依赖

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

编写接口

package com.hdx.contractor.util;

import com.burukeyou.uniapi.http.annotation.HttpApi;
import com.burukeyou.uniapi.http.annotation.param.BodyJsonPar;
import com.burukeyou.uniapi.http.annotation.param.HeaderPar;
import com.burukeyou.uniapi.http.annotation.param.QueryPar;
import com.burukeyou.uniapi.http.annotation.request.GetHttpInterface;
import com.burukeyou.uniapi.http.annotation.request.PostHttpInterface;
import com.burukeyou.uniapi.http.core.response.HttpResponse;
import com.hdx.contractor.business.dto.VideoDTO;

@HttpApi(url = "http://localhost:7001/test")
public interface TestHttpApi {

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

    @PostHttpInterface("/addUser")
    HttpResponse<String> addUser(@BodyJsonPar VideoDTO req);

}

声明定义的HttpAPI的包扫描路径,在spring的配置类上使用@UniAPIScan注解标记定义的@HttpAPI的包扫描路径,会自动为标记了@HttpApi接口生成代理对象并且注入到Spring容器中,之后只需要像使用Spring的其他bean一样,依赖注入使用即可

@UniAPIScan("com.hdx.contractor.util")
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class,args);
    }
}

依赖注入使用

    @Resource
    TestHttpApi testHttpApi;
    
    @GetMapping(value = "/queryApi")
    public String testApi(){
        HttpResponse<String> test = testHttpApi.getUser("test", 1);
        return test.getContentType();
    }

知识点

  • @QueryPar 表示将参数值放到Http请求的查询参数内
  • @HeaderPar 表示将参数值放到Http请求的请求头里
  • @BodyJsonPar 表示将参数值放到Http请求body内,并且content-type是application/json(序列化和反序列化默认用的是fastjson,所以如果想指定别名,可以在字段上标记 @JSONField 注解取别名)
  • @PathPar注解 标记Http请求路径变量参数,仅支持标记普通值类型
  • @CookiePar注解 用于标记Http请求的cookie请求头
  • @BodyFormPar注解 用于标记Http请求体内容为普通表单形式: 对应content-type为 application/x-www-form-urlencoded
  • @BodyMultiPartPar注解 用于标记Http请求体内容为复杂形式: 对应content-type为 multipart/form-data
  • @BodyBinaryPar注解 用于标记Http请求体内容为二进制形式: 对应content-type为 application/octet-stream

@ComposePar注解(这个注解本身不是对Http请求内容的配置,仅用于标记一个对象,然后会对该对象内的所有标记了其他@Par注解的字段进行嵌套解析处理, 目的是减少方法参数数量,支持都内聚到一起传递)

@PostHttpInterface
HttpResponse<String> getUser(@ComposePar UserDTO req); 
public class UserDTO {

    @QueryPar
    private String id;

    @HeaderPar
    private String name;

    @BodyJsonPar
    private AddDTO req;

    @CookiePar
    private String cook;
}

参考路径


http://www.kler.cn/news/361375.html

相关文章:

  • LaTeX参考文献工具和宏包bibmap项目简介
  • ArcGIS002:软件自定义设置
  • python + mitmproxy 爬手机app (1)
  • 如何在Linux中找到MySQL的安装目录
  • 马拉车算法(C/C++)
  • Java避坑案例 - 消除代码重复_模板方法与工厂模式的最佳实践
  • JavaGuide (8)
  • MySQL之CRUD(下)
  • vue中加载GLB模型,计算模型的长宽高、绘制模型的边框线
  • Vue93 vue3 watch监视ref属性的说明
  • 记录:网鼎杯2024赛前热身WEB01
  • Cocos引擎
  • 十四、MySQL事务日志
  • IIC通信与MAX30102采集血样数据+V4L2框架
  • 【Petri网导论学习笔记】Petri网导论入门学习(七) —— 1.5 并发与冲突
  • 上海市计算机学会竞赛平台2024年10月月赛丙组胜率判断
  • 拍立淘按图搜索API接口系列(json数据格式示例)
  • c++ libtorch tensor 矩阵分块
  • 域4:通信与网络安全 第12章 安全通讯和网络攻击
  • 【数据结构与算法】第3课—数据结构之单链表
  • OBOO鸥柏丨《满天星(MTSTAR)》信息发布系统售后服务点位收费标准
  • Unity性能优化1【基础篇】
  • js的入口函数,及入口函数的作用
  • Spring中的参数统一配置
  • Microsoft Visual Studio Install Projects2022发布安装包
  • Java实现html填充导出pdf