Controler+提供者API定义+FeignClient调用

Controller和 提供者API 定义

涉及URL定义,以及接口的参数定义

  1. 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 远程访问提供者的接口了。

posted @   向着朝阳  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示