Controler+提供者API定义+FeignClient调用
Controller和 提供者API 定义
涉及URL定义,以及接口的参数定义
- URL定义
1.1 Controller类上的URL路径,一般用@RequestMapping,
如下,不指定POST还是GET
@RequestMapping("/operation_bff/xxx")`
1.2 接口URL定义,一般使用@PostMapping或者其他
@PostMapping("/v1/sayHello")
@RequestMapping:支持多种 HTTP 请求方法,通过 method 属性指定,如 GET、POST、PUT、DELETE、HEAD、OPTIONS 等。若不指定 method 属性,默认可以处理所有类型的 HTTP 请求。
@PostMapping:是专门用于处理 HTTP POST 请求的注解,它等价于 @RequestMapping(method = RequestMethod.POST)。
1.3 接口请求参数定义
简单参数用 @RequestParam 复杂对象用 @RequestBody 注解
例子
@RestController
@RequiredArgsConstructor
@RequestMapping("/itadmin/xxx")
@Tag(name = "XX功能")
public class XXXXController {
@PostMapping("/v1/xxxyyyy")
@Operation(description = "xxxx")
PageDTO<XXXXResponse> queryDatabaseOperationLog(@Valid @RequestBody XXXXRequestDTO requestDTO) {
}
1.4 提供着定义
注意:接口的参数复杂对象也得加@RequestBody,否则参数值无法从消费端传递给提供者
@Tag(name = "操作日志")
public interface XXXXApi {
@PostMapping("/operation-logs")
@Operation(description = "xxx方法")
void methodNmae(@RequestBody XXXDto dto);
}
Feign调用 (跨微服务调用)
1. 引入依赖
首先,你需要在 pom.xml
中添加 Spring Cloud OpenFeign 的依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2. 启用 Feign 客户端
在 Spring Boot 应用的主类上添加 @EnableFeignClients
注解来启用 Feign 客户端功能:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableFeignClients
public class YourApplication {
public static void main(String[] args) {
SpringApplication.run(YourApplication.class, args);
}
}
3. 创建 Feign 客户端接口
使用 @FeignClient
注解创建一个接口,该接口继承服务提供者的接口:
@FeignClient(name = "gd-xx", contextId = "XXXXFeignClient", primary = false,
configuration = {FeignAuthInterceptor.class})
public interface XXXXFeignClient extends XXXXApi {
}
name 属性
指定了远程服务的名称,用于服务发现。如果使用服务注册与发现组件(如 Eureka、Consul 等),Feign 会根据该名称从注册中心查找服务实例。
contextId
是 @FeignClient 注解中的一个可选属性,它为每个 FeignClient 实例提供了一个唯一的标识符。当你使用 @FeignClient 注解创建多个客户端时,Spring Cloud 会为每个客户端创建一个独立的上下文(ApplicationContext),contextId 就是用来区分这些不同客户端上下文的关键标识。
使用场景:
多实例调用同一服务,当你需要从同一个应用程序中创建多个 FeignClient 实例来调用同一个服务,并且每个实例需要不同的配置时,就可以使用 contextId 来区分这些实例。
就可以在服务消费端使用XXXXFeignClient 远程访问提供者的接口了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性