首页 > 其他分享 >10.Feign组件在NET中的简单使用

10.Feign组件在NET中的简单使用

时间:2024-02-25 10:33:45浏览次数:20  
标签:10 Feign FeignClient url nacosMicroService 接口 NET public

安装包:SummerBoot

Feign 是一种声明式服务调用组件 , 我们只需要声明一个接口并通过注解进行简单的配置(类似于Dao 接口上面的 Mapper 注解一样)即可实现对 HTTP 接口的绑定。 通过 Feign,我们可以像调用本地方法一样来调用远程服务,而完全感觉不到这是在进行远程调用。 Feign底层基于httpClient. 其它作用: 1.自定义拦截器(AOP) 2.封装了Http远程调用过程 3.微服务接入Nacos 4.可结合Polly做降级处理 5.结合JWT做授权与鉴权
方式  特性
HttpGet [GetMapping] 
HttpPut  [PutMapping] 
HttpDelete [DeleteMapping] 
HttpPost [PostMapping] 

 

Feign组件的简单使用:

创建三个项目NacosService(http://192.168.10.13:5152),Summerboot.Feign,Summerboot.Client(http://192.168.10.13:5197)

NacosService项目提供对外接口

ApiController]
[Route("[controller]/[action]")]
public class UserController:ControllerBase
{
    [HttpGet]
    public List<UserInfo> GetUsers()
    {
        List<UserInfo> result = new()
        {
            new(){Id = 1,NickName = "张三"},
            new(){Id = 2,NickName = "李四"}
        };
        return result;
    }

    [HttpPost]
    public UserInfo PostUsers([Body]UserInfo User)
    {
        return User;
    }
}

 

Summerboot.Feign项目

注册服务

builder.Services.AddSummerBoot(); builder.Services.AddSummerBootFeign(); 

里面添加一个接口

[FeignClient(Url="http://192.168.10.13:5152")]
public interface INacosMicroService
{
    [GetMapping("/user/GetUsers")]
    Task<List<UserInfo>> GetUsers();

    [PostMapping("/user/PostUser")]
    Task<UserInfo> PostUser([Body]UserInfo user)
}

 

Feign 组件会由 FeignProxyBuilder 类自动为接口生成实现代理类,注意,此版本中接口必须定义为Task<> 异步方法。

[FeignClient(Url = "http://localhost:5001/home", IsIgnoreHttpsCertificateValidate = true, InterceptorType = typeof(MyRequestInterceptor),Timeout = 100)] 
定义一个接口,并且在接口上添加FeignClient注解,FeignClient注解里可以自定义http接口url的公共部分-url(整个接口请求的url由FeignClient里的url加上方法里的path组成),是否忽略远程接口的https证书校验-IsIgnoreHttpsCertificateValidate,接口超时时间-Timeout(单位s),自定义拦截器-InterceptorType。 

 

[Body] 请求体中支持Json与Form两种格式,默认为Json, 如果需要设置为Form提交

 

Summerboot.Client项目

添加服务

builder.Services.AddSummerBoot();
builder.Services.AddSummerBootFeign();

 

 

[ApiController]
[Route("[controller]/[action]")]
public class MicroFeignClientController
{
    private readonly INacosMicroService _nacosMicroService;
public MicroFeignClientController(INacosMicroService nacosMicroService) { _nacosMicroService = nacosMicroService; } [HttpGet] public async Task<List<UserInfo>> GetUsers() { return await _nacosMicroService.GetUsers(); }
[HttpPost]
public async Task<UserInfo> PostUser(UserInfo User)
{
return await_nacosMicroService.PostUsers(User);
    }
}

 

同时,url和path可以通过读取配置获取,配置项通过${}包裹,配置的json如下:
{
"configurationTest": {
"url": "http://localhost:5001/home",
"path": "/query"
}
}
[FeignClient(Url = "${configurationTest:url}")]

 

标签:10,Feign,FeignClient,url,nacosMicroService,接口,NET,public
From: https://www.cnblogs.com/MingQiu/p/18032118

相关文章

  • PNG格式PNG(Portable Network Graphics)位图图形文件格式 无损压缩的图片格式,支持索引
    PNG(PortableNetworkGraphics)是一种位图图形文件格式,它是一种无损压缩的图片格式,支持索引、灰度、RGB和RGBA等多种颜色模式。PNG格式支持多种颜色模式,包括以下几种:索引色模式(IndexedColor):索引色模式使用一个颜色索引表来存储图像中使用的颜色。每个像素使用索引值来指定......
  • Codeforces 1025F Disjoint Triangles
    结论:如果两个三角形不相交,那么一定存在两条内公切线。于是可以考虑枚举这条内公切线的端点\(x,y\)。那么一个三角形的两个端点就会在\(x\toy\)这条线的同一侧,另外一个三角形的两个端点会在这条线的另一侧。同时这条线的一侧与其配对的端点可能是\(x\)也可能是\(y\)。......
  • 暑期集训 Day10 —— 模拟赛复盘
    ${\color{Green}\mathrm{Problem\0:water}}$题如其名,可以用单调队列做,但是数据范围直接暴力枚举每一高度就行。最不会打错的,还是暴力,所以用暴力。${\color{White}\mathrm{}}$${\color{White}\mathrm{}}$${\color{White}\mathrm{}}$${\color{Green}\mathr......
  • EvolveGCN Evolving Graph Convolutional Networks for Dynamic Graphs
    目录概符号说明EvolveGCN代码ParejaA.,DomeniconiG.,ChenJ.,MaT.,SuzumuraT.,KanezashiH.,KalerT.,SchardlT.B.andLeisersonC.E.EvolveGCN:Evolvinggraphconvolutionalnetworksfordynamicgraphs.AAAI,2019.概GCN用在动态图上的早期探索.符号......
  • C#版本与.NET版本对应关系以及各版本的特性
    C#版本.NET版本发布日期特性C#1.0.NETFramework1.02002-02-13委托、事件C#1.1.NETFramework1.12003-04-24APM(异步编程模型)C#2.0.NETFramework2.02005-11-07泛型、匿名方法、迭代器、可空类型C#3.0.NETFramework3.02007-11-06隐式类型......
  • IIS PUT请求.netcore6.0接口 报HTTP Error 405 - Method Not Allowed
    在新的服务器上部署了一个.netcore的项目,部分请求地址使用了put、delete方式,导致无法正常请求,报Error405-MethodNotAllowed。由于配置IIS时把“WebDAV发布”给勾选了,所以会导致拦截。服务器和IIS10配置如下图:解决方案服务器上删除“WebDAV发布”1、打开“控制面......
  • ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
    1.问题在测试Windows上使用多版本Mysql数据库时,windows如何同时安装两个不同版本的Mysql(Mysql8.0+Mysql5.7)mysql-uroot-pn3fsco#ZdR7T在尝试使用DOS连接Mysql数据库发现问题2.原因我这里使用多版本Mysql数据库,该数据库在配置时,为了避免端口号与原数据库冲突,在my.ini中将......
  • 2-10. 人物属性及伤害计算
    场景中添加一只野猪将素材中的野猪图片进行切割,然后给野猪绑定刚体和碰撞体注意需要两个碰撞体第一个碰撞体在脚底,避免野猪掉下去,为了避免这个碰撞体和其它敌人以及玩家产生碰撞,需要排除Player和Enemy层,这样这个碰撞体就只会和平台产生碰撞,避免野猪掉下去第二个碰撞体表......
  • 安卓应用开发日记10
    修正主界面显示资产,并且每次切入主界面重新计算总资产,简易记账本完工packagecom.example.helloworld;importstaticcom.example.helloworld.util.DateUtil.getTime;importandroidx.appcompat.app.AppCompatActivity;importandroid.content.Intent;importandroid.os.Bundle;i......
  • NanoFramework操作ESP32(一)_基础元器件篇(四十三)_ KY-010光遮断传感器
    一、元器件介绍1、针脚用途编号名称功能1GND电源地2+5V电源正3S信号脚;倾斜时输出低电平二、示例代码1、代码:元器件的针脚ESP32模块的针脚GND;供电脚-GND+5V;供电脚++5VS;信号脚IO16  #regionKY-010光遮断传感器......