网店网站设计论文,网页制作教程第三版赵丰年pdf,网站打开乱码,vr技术对网站建设的影响FeignClient这个注解#xff0c;已经封装了远程调用协议。在springboot的开发#xff0c;或者微服务的开发过程中#xff0c;我们需要跨服务调用#xff0c;或者调用外部的接口#xff0c;我们都可以使用FeignClient。 一、FeignClient介绍
FeignClient 注解是 Spring Cl… FeignClient这个注解已经封装了远程调用协议。在springboot的开发或者微服务的开发过程中我们需要跨服务调用或者调用外部的接口我们都可以使用FeignClient。 一、FeignClient介绍
FeignClient 注解是 Spring Cloud 中的一个组件它是基于 Netflix Feign 实现的。FeignClient 注解可以帮助我们定义和实现服务之间的 RESTful 接口使得服务之间的调用更加方便和可靠。FeignClient 注解可以用于客户端的 API 接口定义它可以将一个 HTTP API 接口转化为一个 Java 接口从而使得我们可以像调用本地方法一样调用远程服务。
注解源码与解析
Target(ElementType.TYPE)
Retention(RetentionPolicy.RUNTIME)
Documented
Inherited
public interface FeignClient {AliasFor(name)String value() default ;String contextId() default ;AliasFor(value)String name() default ;DeprecatedString qualifier() default ;String[] qualifiers() default {};String url() default ;boolean decode404() default false;Class?[] configuration() default {};Class? fallback() default void.class;Class? fallbackFactory() default void.class;String path() default ;boolean primary() default true;}
1.1 value属性 具有可选协议前缀的服务的名称。名称的同义词。无论是否提供url都必须为所有客户端指定名称。可以指定为属性键例如${propertyKey}。
1.2 contextId属性 这将被用作bean名称而不是名称如果存在但不会用作服务id。
1.3 name属性 和value作用相同
1.4 qualifier属性 已弃用qualifier()。如果qualifier()和 qualifiers() 都存在我们将使用后者除非 qualifiers() 返回的数组为空或仅包含null或空白值在这种情况下我们将首先返回qualifier() 如果也不存在则返回默认值contextId“FeignClient”。
1.5 qualifiers属性 如上已说明
1.6 url属性 绝对URL或可解析的主机名协议是可选的
1.7 decode404属性 404是否应该解码而不是抛出虚假异常
1.8 configuration属性 用于外部客户端的自定义配置类。可以包含组成客户端的部分的覆盖Bean定义例如feign.codec.Decoder, feign.codec.Encoder, feign.Contract.
1.9 fallback属性 指定的外部客户端接口的回退类。回退类必须实现由该注释注释的接口并且是有效的spring bean。
1.10 fallbackFactory属性 为指定的外部客户端接口定义回退工厂。回退工厂必须生成回退类的实例这些实例实现由FeignClient注释的接口。回退工厂必须是有效的spring bean。
1.11 path属性 所有方法级映射使用的路径前缀。
1.12 primary属性 是否将外部代理标记为主bean。默认为true。
二、常见的FeignClient接口的几种方式总结
FeignClient(name myhuaweicloud, url https://xxx.com/)
public interface HuaweicloudClient {/*** 获取access-token接口*/PostMapping(v1/xxx/enterprises/access-token)public MapString,Object getAccessToken(RequestBody MapString, Object params);/*** 获取实况地址统一接口*/PostMapping(/v2/xxx/devices/channels/media/live-connections)public MapString, Object liveConnections(RequestHeader(name Access-Token,required true) String Token,RequestBody MapString, Object params);/*** 获取通道列表* param map* return*/GetMapping(/v1/xxx/channels)public MapString, Object channels( RequestHeader(name Access-Token,required true) String Token,RequestParam(device_id)String deviceId,RequestParam(offset) Integer offset,RequestParam(limit)Integer limit );/*** 获取设备列表* param map* return*/GetMapping(/v1/xxx/devices)public MapString, Object devices( RequestHeader(name Access-Token,required true) String Token,RequestParam(device_name) String deviceName,RequestParam(offset) Integer offset,RequestParam(limit)Integer limit);}
1、我们使用FeignClient(name myhuaweicloud, url https:/xxx.com/)
对接口进行注解。
接口中封装的方法有同通过
PostMapping
GetMapping 进行注解。
这两种请求方式对应。使用PostMapping 注解表示接口需要通过post进行请求使用GetMapping表示接口需要通过get请求。
2、看一下常见的参数传递方式
RequestBody MapString, Object params
以body的方式传递json参数。
RequestHeader(name Access-Token,required true) String Token
请求头中传递参数
RequestParam(device_name) String deviceName
已键值的方式拼接参数和值进行传递