范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Feign接入第三方restfulapi入门

  通常来说,很多人用feign是用于内部环境的spring cloud微服务调用。但feign其实是封装了http请求,那调用外部restful api是没有问题的。
  在此讲下集成步骤,还有几种配置方法,以及一些注意点。 包引入     org.springframework.cloud     spring-cloud-starter-openfeign     3.1.1 
  这里要注意的是,和springboot 版本匹配问题.  一开始使用了2.* 的feign版本,而我的springboot 是 2.6.5,然后报spring boot configration类找不到。更新feign到3.1.1就可以了。 feign编写
  这个各种文章都有, 在Application类,增加注解 @EnableFeignClients 编写ApiClient interface 注入实例就可以调用了 请求得到的对象,可以直接反序列化为自定义的类。这个还挺方便。当然,也可以返回String,自己做json反序列化 当返回的状态不是200时,会异常的形式返回,这个需要处理
  代码示例: @SpringBootApplication @EnableFeignClients public class Application {     public static void main(String[] args) {         SpringApplication.run(Application.class, args);     } }  @FeignClient(name = "api",         url = "https://abc.abc.com/api") public interface AbcApi {      @RequestMapping(value = "/", method = RequestMethod.POST)     String query(@RequestParam Map param); }   @SpringBootTest @Slf4j class KaolaApiTest {      @Resource     AbcApi api;      @Test     void query() {         Map param = new HashMap<>();         param.put("sortType", "1");         param.put("pageIndex", "1");          try {              String responseEntity = api.query(param);              log.info("responseEntity {}", responseEntity);         }         catch (Exception e){ // 非200的返回             log.warn("fail to request {}", e);         }     } }
  还是比较简洁的,不过, 似乎依赖spring框架比较多 ,不知道在其他环境集成是不是还是这么简单。 Request配置及统一处理
  因为配置请求参数,和统一的业务处理我是放在一起的,所以这里也一起说明。
  API请求的参数,主要包括像格式、字符集等。而统一业务处理,比如像加签、加密这些。
  feign的配置有三种方式,按照作用域如下 全局配置 实例配置 单个请求配置
  根据我的日志打印,是先调用2的实例配置,再调用全局配置。 假如两个都配置,需要注意这个优先级。
  ======= local ApiInterceptor start ========
  ======= local ApiInterceptor end ========
  ======= global ApiInterceptor start ========
  ======= global ApiInterceptor end ======== 全局配置
  使用 @Configuration 的配置注入,并且需要 实现 RequestInterceptor 接口。
  作用域是全局的,所以不适合做业务相关的处理。不过你假如只有一个client配置,写这里也无妨。
  业务处理的方式,是获取body或者query参数,处理后,再放到header, query, body中去。 @Configuration  // a  global feign client interceptor public class FeignConfig implements RequestInterceptor {       @Override     public void apply(RequestTemplate template) {         log.info("=======  FeignClientsConfigurationInterceptor ========");         template.header("Content-Type", "application/json;charset=utf-8");          // 读取业务参数 template.queries or template.body         JSONObject requestBody= (JSONObject) JSON.parse(new String(template.body()));         String appid= (String) requestBody.get("appid");         // 处理业务数据 bodyText,并写回         template.body(bodyText);     } } 实例配置
  因为全局配置会影响所有的feign,所以假如项目中有不同的feign client,使用的时候不应该采用全局。
  实例配置,自己建立一个interceptor,然后在ApiClient中配置
  注意,实例的配置不应该加入@Configuration 的注解 ,防止被注入。 public class ApiConfig {      @Bean     public RequestInterceptor apiInterceptor(){          return template -> {             log.info("=======  apiInterceptor start ========");             handleRequestType(template); // 处理方式同全局             log.info("=======  apiInterceptor end ========");         };     } }   @FeignClient(name = "api",         url = "https://abc.abc.com/api",         configuration = ApiConfig.class)  // 这里配置上 public interface AbcApi {      @RequestMapping(value = "/", method = RequestMethod.POST)     String query(@RequestParam Map param); }
  单个请求配置
  这种配置方式就是直接在requestMap上增加,其实之前写的 method 就是如此。还可以增加其他的,比如如下,就是请求乱码可以增加一下header。 @FeignClient(name = "api",         url = "https://abc.abc.com/api") public interface AbcApi {      @RequestMapping(value = "/", method = RequestMethod.POST,           produces = "application/json;charset=UTF-8", consumes = "application/json;charset=UTF-8")     String query(@RequestParam Map param); }
  好了,集成入门就到此。简单使用应该问题不大了。 假如生产使用,还需要测试性能,连接池等问题。
  我是窝牛,专注于各种大杂烩,各种都写,都写不好。欢迎讨论交流。

互联网搞钱,其实就这点门道原文见得时,横说竖说皆是。若于此处通,彼此不通,只是未见得。卫天知解读有了头脑,横说直讲你都能整明白。如果此处明白了,别人又不明白了,只是因为没有用脑。头脑,就是悟性,就是找到了大联想电脑IPO上市终止如何是好联想集团有限公司申请在科创板ipo上市终止事件触动到许多人的敏感神经,各路英雄纷纷议论发文表露心声从爱国,到科技创新能力,更有涉及到高管高工资等等。在此看来,联想电脑承载了太多人的2025年将被科技淘汰的五件常用物品一汽车后视镜随着我们向无人驾驶汽车的过渡,或者甚至当我们利用更多可以做平行停车等事情的部分无人驾驶汽车时,我们的车辆将需要更多的摄像头和传感器。由于这些监控系统的功能更多,它们将补马斯克旗下SpaceX估值超1000亿美元,为全球第二大创业公司多位知情人士透露,SpaceX与公司的新老投资者达成了协议,以每股560美元的价格从内部人士手中出售最多7。55亿美元的股票,使该公司估值增至1003亿美元。此次交易为现有股票的二云服务器是腾讯云好,还是阿里云好,各有什么利弊,该怎么选择呢?个人是更倾向阿里云的!这也不是说腾讯云不好,作为一个公有云资深用户,这可以说是我货比三家进行综合对比,阿里云完全是最优选择。从我个人观点来看,当你在进行选择时,首先应该明白,你最需刚买的U盘,68G(惠普)。做完启动盘然后只剩31G,是有病毒吗?谢谢?谢邀!正经回答。先说结论,肯定有问题。先说说容量判别的事情,68G的容量肯定是有问题,一般容量标识都是2的n次方,一般就是,4,8,16,32,64,128,256所以没有68G这比特币重回55000美元之际,SEC最快本月批准四支比特币ETF市场在苦等多年之后,有可能会在未来几周内迎来4支美国比特币ETF。智通财经APP获悉,本月,美国证券交易委员会(SEC)将再次不得不批准拒绝或推迟一系列基于最大数字货币的交易所交易Gin框架中处理请求参数的零值问题Gin框架处理前端请求的时候,使用ShouldBindXXX绑定参数数据到结构体上是一种比较常用的取数据手段,但在一些情况下,可能会出现问题例如,现在有一个userupdate接口iPhoneSE3或明年春季发布设计不变有望搭载A15芯片手机中国新闻iPhone13系列已经发布,接下来,注重性价比的小屏党又将目光瞄准了新的iPhoneSE。昨晚,一位来自日本的爆料人称,苹果将于明年春季发布全新的iPhoneSE3。想买千元机不知道怎么选?这几款性价比很高,买给父母真合适随着智能手机的普及,手机的功能正在变得越来越丰富,以前的老年机正在逐渐淘汰,很多人就会选择给父母买个千元机,但又不知道怎么选,其实很简单,年纪大一点的父母只需要一个电池大,字体大,传GeForceRTX206012GB售价接近300美元正面对决RDNA2入门型号据传NVIDIA正在准备一款新的图灵显卡,以应对AMD的RDNA2GPU,即GeForceRTX206012GB。该卡的生产是为了对抗AMD的入门级阵容,因为他们的GeForceR
评测性能更强,温度更低RedmiBookPro15锐龙版拥有不错的外壳质感以及屏幕素质,性能表现也不错,续航也很长。由于新的散热设计,机身表面温度分布更加合理,体感温度也更低。只要不追求一定要有独立显卡,RedmiBookPro15会是华为视频为2。3亿全球用户提供了非凡内容,可能你还不知道前段时间华为发布了最新的华为智慧屏V系列,它最重要的特点就是优秀的音画体验声音方面有帝瓦雷联合设计调音画质方面有来自中国的HDR标准HDRVividV系列在硬件上的表现可圈可点,而评测全球首拆最强4000系列锐龙SurfeLaptop4SurfaceLaptop4最大的特点是在设计和品牌上,做工和细节处理的很到位,32的15英寸大屏幕带来了很广的视角,非常适合办公。锐龙7定制版的性能应付日常工作绰绰有余,电池虽然评测跨界选手ThinkBook13s锐龙版ThinkBook13s锐龙版的性价比是非常高的,轻薄便携,外观好看,接口多,屏幕好,给到了更大的16GB内存,就保证了多开软件的流畅性,还有512GB的固态硬盘,也就不需要经常担评测从手机到电脑都能用的小充电器AohiMagcube30W用这么小的一个充电头,就能从手机一直充到电脑,这是之前想都不敢想的事情,,它不仅支持小功率的设备,也兼容目前主流手机的PD快充,而且温度并不高,体验是非常好的。伴随着技术的发展,现观察华为发布智慧屏驾到V75Super到底怎么样全新的智慧屏V系列又来了,现在一听智慧屏这个词大家都自然而然能想到华为,智慧屏也一直在用各种传统电视所没有的功能给我们带来惊喜和便利。但是这一次V系列有一个口号就是不止智慧,这就不评测经典超极本,现以锐龙呈现Yoga13锐龙版这是一款在性能屏幕便携性甚至体验上都没有明显短板的水桶机,同价位段拥有很强的竞争力,和intel版本的主要区别就是没有了雷电接口以及PCIe4。0去年10月联想发布的Yoga13s评测高端商务本不只有硬件惠普战X锐龙版战X的续航,发热还有噪音表现都可圈可点,对于商务人士来说这些才是比超高功耗和跑分性能更重要的,再加上一系列的效率和安全设计,还有高端的企业级售后服务,这些都不会只会堆配置就能解决的资讯DELL2021新产品线梳理借着11代酷睿处理器发布的契机,各大厂商都更新了自己的产品线,DELL也是其中之一,比较特殊的是,在前段时间的海南首届消博会上,DELL也有参展,在那就已经展示了一部分的新品,正好评测锐龙新选择戴尔G15锐龙版有外星人的影子,不错的游戏体验,也拥有不错的散热设计,戴尔游匣首发价买到3060是个不错的选择戴尔游匣G15已经发布有一段时间了,我也曾简单地聊过该产品,G15处理器有酷睿和锐龙两评测比大更大MateBook1632的16英寸屏幕比169的15。6英寸屏幕大了13。5,纵向显示空间大了接近16,如果不打游戏,需要一个高素质大屏幕且续航很长的产品,MateBook16很值得考虑,唯一需要想一