点击▲关注 “爪哇笔记”   给公众号标星置顶

更多精彩 第一时间直达

一、前言

在项目开发中,内部服务通常我们会采用PRC的方式进行调用,消费者和提供者统一引入开源框架Dubbo,然后再配置个注册中心,真香!

然而,项目中经常也会调用一些外部服务,比如短信、天气或者是撸主小黄图中的鉴黄,这时候Dubbo就显得有点无能为力了。

撸主之前用的是SpringBoot自带的RestTemplate,今天与大家来聊一聊SpringCloud家族的Feign

二、简介

Feign 是Netflix开发的声明式、模板化的HTTP客户端,Feign可帮助我们更加便捷、优雅地调用HTTP API

Spring Cloud 对Feign进行了增强,使其支持Spring MVC注解,另外还整合了RibbonEureka,从而使得Feign的使用更加方便。

可以理解为Feign是一个超级方便的调用Spring-Cloud远程服务的框架/工具,帮助开发者以更少耦合更少代码更快更兼容的方法进行远程服务调用。

三、配置

pom.xml 配置:

org.springframework.boot

spring-boot-starter-parent

2.1.7.RELEASE

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-openfeign

org.springframework.cloud

spring-cloud-dependencies

Greenwich.SR3

pom

import

Application 启动类:

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.cache.annotation.EnableCaching;

import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

import org.springframework.cloud.openfeign.EnableFeignClients;

import org.springframework.scheduling.annotation.EnableScheduling;

/**

* 启动类,宅男福利,又发现了一个妹子图

* 小黄图:https://www.cloudbed.vip

*/

@SpringBootApplication

@EnableFeignClients

public class Application extends SpringBootServletInitializer {

private static final Logger logger = LoggerFactory.getLogger(Application.class);

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

logger.info("爪哇工具箱启动");

}

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {

return application.sources(Application.class);

}

}

  • @EnableFeignClients 启用客户端、扫描和注册feign客户端bean定义。

  • @EnableEurekaClient 让注册中心能够发现,扫描到该服务,只适用于Eureka作为注册中心,本例中并未使用。

  • @EnableDiscoveryClient 让注册中心能够发现,扫描到该服务,可以适用 Eureka 或其它(consul、zookeeper等)注册中心 ,本例中并未使用。

Spring Cloud Edgware 版本开始,@EnableDiscoveryClient@EnableEurekaClient 可省略,只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上。

四、客户端

接口服务:

import com.itstyle.picture.common.model.Result;

import org.springframework.cloud.openfeign.FeignClient;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestParam;

/**

* 客户端调用、根据IP获取区域

* 小黄图:https://www.cloudbed.vip

*/

@FeignClient(url = "${ip.taobao}")

public interface FeignClientService {

@PostMapping(value="service/getIpInfo.php")

String getArea(@RequestParam("ip") String uuid);

}

由于是外部服务,这里我们需要自行配置url,对应外部服务地址。如果是内部服务,并且使用了注册中心,可以配置成以下这个样子。

/**

* 客户端调用

* 小黄图:https://www.cloudbed.vip

*/

@FeignClient(name = "ip-api")

public interface FeignClientService {

@PostMapping(value="service/getIpInfo")

String getImage(@RequestParam("uuid") String uuid);

}

FeignClient中的name是指注册到Eureka的被调用者的应用名称。

调用服务:

/**

* 小黄图:https://www.cloudbed.vip

*/

@RestController

@RequestMapping("tools/image")

public class ImagesController {

@Autowired

public FeignClientService FeignClientService;

/**

* 测试 Feign 服务

* @param uuid

* @return

*/

@GetMapping("getImage/{ip}")

public String getImage(@PathVariable("ip") String ip) {

return FeignClientService.getArea(ip);

}

}

五、服务端

也就是被调用者,当然没什么变化,只要对外开放 HTTP服务即可。

六、小结

本篇只是简单的使用案例,Feign还可以与EurekaNacosRibbon组合使用来支持注册发现以及负载均衡。后面,抽空接着撸!

1. 分享几个有趣实用的福利给大家

2. 周末,撸一个鉴黄 API 给大家

3. 高速下载小视频神器,墙裂推荐

4. 深夜,给小黄图撸了一件漂亮的外壳

5. 小黄图升级了,接入更加强大的鉴黄功能

▲一个有温度的公众号,期待与你一起进步

feign调用https接口_SpringBoot 2.0 开发案例之整合HTTP客户端Feign相关推荐

  1. fastdfs中浏览器访问获取不到文件_SpringBoot 2.0 开发案例之整合FastDFS分布式文件系统...

    原作者:小柒 地址:https://blog.52itstyle.vip/archives/4837/ 前言 最近在做一款图床服务,前面的文章也有提到,之前整合了阿里云 OSS 做图片存储,虽然小批量 ...

  2. 使用 Feign 调用分页接口报错:Method has too many Body parameters(亲测)

    一.背景 接口定义: @ApiOperation(value = "分页查询会话") @PostMapping(Routes.SESSIONS_QUERY) JsonResult& ...

  3. feign调用service_Spring-cloud-eureka使用feign调用服务接口

    Spring-cloud-eureka使用feign调用服务接口的具体方法,供大家参考,具体内容如下 基于spring-boot 2.0以上版本完成的微服务架构 pom.xml org.springf ...

  4. Spring Boot项目中使用RestTemplate调用https接口出现 unable to find valid certification path to requested target

    问题描述:Spring Boot项目中使用RestTemplate调用https接口出现以下错误: PKIX path building failed: sun.security.provider.c ...

  5. feign调用走不走网关全局拦截_feign服务端出异常客户端处理的方法

    在使用feign进行远程方法调用时,如果远程服务端方法出现异常,客户端有时需要捕获,并且把异常信息返回给前端,而如果在开启熔断之后,这个异常会被消化,所以说,如果希望拿到服务端异常,feign.hys ...

  6. SpringBoot开发案例之整合Dubbo提供者(一)

    既然是开发案例,显然不会扯那么多老婆舌,有不清楚这两个东东的请自行百度. 开发环境 JDK1.7.Maven.Eclipse.SpringBoot1.5.1.Dubbo2.8.4 项目结构 相关配置 ...

  7. SpringBoot2.x开发案例之整合Quartz任务管理系统

    基于spring-boot 2.x + quartz 的CRUD任务管理系统,适用于中小项目. 基于spring-boot +quartz 的CRUD任务管理系统: https://gitee.com ...

  8. feign调用第三方接口_讲一个你不知道的事:SringCloud的feign的继承特性

    前言 说起SpringChoud的feign大家用过的都说好.Feign是Netflix开发的声明式.模板化的HTTP客户端.对于我们微服务来说,微服务之间的api调用,使用feign来说是再方便不过 ...

  9. Java调用Https接口:fatal, handshake_failure问题记录

    一. 问题描述 HttpClient调用接口,报错:handling exception: javax.net.ssl.SSLHandshakeException: Received fatal al ...

  10. feign调用第三方接口服务

    前言 做个笔记,下次直接抄 这里需要拿到response的header做验签之类的操作 所以用feign.Response来接收响应 正文 第三方接口调用的feign,自测OK import com. ...

最新文章

  1. 回到未来 – 大胆畅想如何追赶并超越腾讯模式
  2. 开发日记-20190715 关键词 读书笔记 《Perl语言入门》Day 9
  3. 初一七年级计算机信息全册教案,初一信息技术教案全一册
  4. php 去掉实体,用PHP删除除5个预定义HTML实体之外的所有实体的最佳方法-用于XHTML5输出...
  5. java format用法_java学习常用函数之日期时间函数
  6. Python还值得学吗?
  7. mac 安装adb工具
  8. 人脸识别技术软件测试测什么,人脸识别这么火,你知道它是什么吗?
  9. 计算机车牌识别的步骤,车牌识别流程图
  10. linux sudo命令、不输入密码执行需要root、sudo报错:xxx is not in the sudoers file. This incident will be reported.
  11. CS客户端渗透测试(二)信息收集与流量分析
  12. C.就来谈谈深搜与广搜
  13. 为什么计算机无法读取u盘,U盘无法被电脑识别怎么办?
  14. 用qt合并ts视频文件
  15. 本地搭建WordPress教程
  16. 佳博/芯桦打票机对接(含USB和网口)
  17. 计算机术语bootstrap,Bootstrap及jackknife刀切法中文讲义.pdf
  18. 通过RGB或YUV改变图像的色度和饱和度
  19. web项目API接口设计与开发总结
  20. 详解C语言实现扫雷游戏

热门文章

  1. centos 6.3+mysql+5.6+nginx 1.5.8
  2. Linux软件包管理器
  3. 一步一步安装服务器监视软件MRTG
  4. 如何在 Mac 上打开或关闭专注模式?
  5. 苹果发布 AirTag 固件更新
  6. 修复Mac上的“ Safari无法找到服务器”错误的解决方法
  7. 如何使用Wondershare UniConverter应用效果并调整音量
  8. Vim 实用技术,第 2 部分: 常用插件(转)
  9. 双重认证 也不安全:Gmail、Yahoo mail 已被攻破!
  10. c# 注册了Ctrl+空格为热键,捕获后发送Ctrl+Shift