返回顶部
首页 > 资讯 > 后端开发 > Python >使用FeignClient进行微服务交互方式(微服务接口互相调用)
  • 838
分享到

使用FeignClient进行微服务交互方式(微服务接口互相调用)

2024-04-02 19:04:59 838人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录使用FeignClient进行微服务交互先写一个公共方法然后写一个Feign调用被Feign调用的方法如下@FeignClient调用微服务注意事项FeignClient接口不能

使用FeignClient进行微服务交互

先写一个公共方法

  public String getSettingValue(String name) {
       Map<String, Object> map = (Map) settinGClient.getByName(name).getData();
       return (String) map.get("value");
  }

然后写一个Feign调用

@FeignClient(value="qiang-admin")
public interface SettingClient {
    @RequestMapping(value="/setting/getSetting/{name}",method = RequestMethod.GET)
    public ReturnMsg getByName(@PathVariable("name") String name);
}

@FeignClient注解用于指定从哪个服务中调用功能 ,注意 里面的名称与被调用的服务

名保持一致,并且不能包含下划线。

@RequestMapping注解用于对被调用的微服务进行地址映射。注意 @PathVariable注

解一定要指定参数名称,否则出错。

@PathVariable:接口参数

被Feign调用的方法如下

    @RequestMapping(value="/getSetting/{name}",method = RequestMethod.GET)
    public ReturnMsg getByName(@PathVariable String name){
        Setting condition = new Setting();
        condition.setName(name);
        ReturnMsg returnMsg = new ReturnMsg<>();
        Setting setting = settingService.findByCondition(condition);
        returnMsg.setCode(ReturnIntCode.SUCCESSS_CODE);
        returnMsg.setData(setting);
        return returnMsg;
    }

@FeignClient调用微服务注意事项

在初次使用SpringCloud,调用微服务的时候,常常会踩坑,这里总结一下,在调用微服务的时候,常犯的几点错误及注意点:

FeignClient接口不能使用@GettingMapping之类的组合注解

@FeignClient("target-servername")
  public interface FeignClient {
       @RequestMapping(value = "/simple/{id}", method =RequestMethod.GET)
 public Object findById(@PathVariable("id") Long id);
 ...
}

这边的@RequestMapping(value = "/simple/{id}", method = RequestMethod.GET) 不能写成@GetMapping("/simple/{id}") 。因为GetMapper是一个组合注解。

FeignClient接口中如果使用到@PathVariable

必须指定其value

@FeignClient("target-servername")
public interface FeignClient {
 @RequestMapping(value = "/simple/{id}", method = RequestMethod.GET)
 public Object findById(@PathVariable("id") Long id);
 ...
}

这边的@PathVariable("id") 中的”id”,不能省略,必须指定。

FeignClient多参数的构造

如果想要请求target-servername 服务,并且参数有多个例如:Http://target-servername/query-by?id=1&username=张三 要怎么办呢? 不能构造一个复杂的对象去接收,必须一个一个接收参数

@FeignClient("target-servername")
public interface UserFeignClient {
 @RequestMapping(value = "/query-by", method = RequestMethod.GET)
 public Object queryBy(@RequestParam("id")Long id, @RequestParam("username")String username);
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 使用FeignClient进行微服务交互方式(微服务接口互相调用)

本文链接: https://lsjlt.com/news/141520.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作