java入门,记一次微服务间feigin请求的问题

本文介绍了如何在微服务中使用FeignClient进行服务调用,强调了接口参数类型匹配的重要性。同时,概述了Feign的实现原理,包括注解驱动、Ribbon-Hystrix集成、可配置组件和SpringCloud集成,展示了其作为强大RESTAPI客户端的特点。
摘要由CSDN通过智能技术生成

一、前言

       记录工作中遇到的开发问题,而不是写博客凑字数。

二、微服务调用

1、通过本服务调用另外一个服务,需要定义一个接口,并用@FeignClient 注解进行注解

value = "服务名" 要调用的服务名

服务得到路径,对应的是controller的请求路径。

/tmpUser/updateUserNickName

@FeignClient(value = "服务名")
public interface BlockChainClient {
	
	@PostMapping("/tmpUser/updateUserNickName")
	ResponseData<String> updateUserNickName(@RequestBody Map<String, Object> params);
}

需要调用的服务的controller 

@Slf4j
@RestController
@RequestMapping("tmpUser")
public class UserTmpController {
	
	
	   @Autowired
	    private UserService userService;
	    
		@ApiOperation(value = "更新用户昵称", notes = "更新用户昵称")
	    @PostMapping("updateUserNickName")
	    public ResponseData<String> updateUserNickName(@RequestBody Map<String, Object> param) {
	        try {
	        	String phone = "";
	        	String nickName="";
	        	if(param.containsKey("phone")) {
	        		phone = param.get("phone").toString();
	        		
	        	}
	        	
	        	if(param.containsKey("nickName")) {
	        		nickName = param.get("nickName").toString();
	        		
	        	}
	        	if(!StringUtils.isEmpty(phone) && !StringUtils.isEmpty(nickName)) {
	        		 
	        		 userService.updateUserNickName(phone, nickName);
	        	}
				 
				return ResponseData.success();
			} catch (Exception e) {
				e.printStackTrace();
			}
	        return ResponseData.error();
	    }

}

2.遇到的问题:

定义的接口传的参数类型需要和接口的参数类型一致,包括注解,否则报400错误。

比如接口是:@RequestBody  而 服务的controller是@RequestParam 就会包400错误、

----------------

feigin得到实现原理

Feign是一个声明式的REST API客户端,使得编写HTTP客户端变得更简单。使用Feign,只需创建一个接口并注解,Feign会为你生成实现。你不需要手动创建每次HTTP请求。Feign简化了与远程HTTP服务的交互,提供了简洁、强大的注解支持,并允许你定义接口和注解,以简化HTTP客户端的创建。

以下是Feign实现原理的概述,由于篇幅限制,这里无法提供5000字的详细解释,但可以为你提供一个全面的概览:

  1. 注解驱动:Feign使用注解来定义HTTP请求的各种参数,例如URL、HTTP方法、请求头、请求体等。通过注解,Feign可以自动生成请求的代码,用户只需编写声明式的接口即可。
  2. Ribbon与Hystrix集成:Feign默认集成了Ribbon和Hystrix。Ribbon是一个负载均衡器,可以根据配置自动在多个服务实例之间进行请求的分配。Hystrix则是一个容错管理工具,可以自动处理服务调用中的延迟和故障。
  3. 可插拔的编码器和解码器:Feign允许用户自定义请求和响应的编码器和解码器,以支持不同的数据格式和HTTP客户端库。
  4. 可配置的模板:Feign允许用户根据需要配置不同的HTTP模板,例如使用不同的连接池、设置不同的超时时间等。
  5. 适配器模式:Feign使用适配器模式来集成不同的HTTP客户端库,例如Apache HttpClient、OkHttp等。这意味着用户可以根据需要选择最适合自己的HTTP客户端库。
  6. Spring Cloud集成:Feign与Spring Cloud紧密集成,可以方便地与Spring Cloud的其他组件(例如Eureka、Zuul等)配合使用。
  7. 扩展性:Feign提供了丰富的扩展点,允许用户根据需要定制Feign的行为,例如自定义请求和响应的处理方式等。

总之,Feign的实现原理基于注解驱动、Ribbon与Hystrix集成、可插拔的编码器和解码器、可配置的模板、适配器模式、Spring Cloud集成和扩展性等方面,这些特点使得Feign成为了一个强大而灵活的REST API客户端。如需更深入了解Feign的实现原理,建议查阅官方文档或相关资料。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋力向前123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值