使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务

如果你的项目使用了SpringCloud微服务技术,那么你就可以使用Feign来作为http客户端来调用远程的http服务。当然,如果你不想使用Feign作为http客户端,也可以使用比如JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client或者Spring的RestTemplate。

那么,为什么我们要使用Feign呢?

首先我们的项目使用了SpringCloud技术,而Feign可以和SpringCloud技术无缝整合。并且,你一旦使用了Feign作为http客户端,调用远程的http接口就会变得像调用本地方法一样简单。

下面就看看Feign是怎么调用远程的http服务的吧。

(1)首先你得引入Feign依赖的jar包:

gradle依赖:

compile "org.springframework.cloud:spring-cloud-netflix-core:1.3.2.RELEASE"

Maven依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-netflix-core</artifactId>
    <version>1.3.2.RELEASE</version>
</dependency>

(2)在properties配置文件中配置要调用的接口的URL路径(域名部分)

url.xapi=http://xapi.xuebusi.com

(2)声明要调用的远程接口

/**
 * Created by SYJ on 2017/8/11.
 */
@FeignClient(name = "xapi", url = "${url.xapi}")
@RequestMapping(value = "/Resume", produces = {"application/json;charset=UTF-8"})
public interface ResumeClient {
    @RequestMapping(value = "/OperateResume", method = RequestMethod.POST)
    ResultModel sendInterviewRD(@RequestBody FeedBackDto feedBackDto);
}

说明:

@FeignClient 是Feign提供的注解,用于通知Feign组件对该接口进行代理(不需要编写接口实现),使用者可直接通过@Autowired注入。
@RequestMapping 是Spring提供的注解,这里可以直接使用以前使用SpringMVC时用过的各种注解,唯一不同的是,这里只是把注解用在了接口上。

如果将Feign与Eureka组合使用,@FeignClient(name = "xapi")意为通知Feign在调用该接口方法时要向Eureka中查询名为 xapi 的服务,从而得到服务URL,

但是远程的http接口并不是我们自己的,我们无法把它注册到Eureka中,所以这里我们就使用 url = "${url.xapi}" 把要调用的接口的url域名部分直接写死到配置文件中。

下面就开始调用吧:

Service部分:

/**
 * Created by SYJ on 2017/4/26.
 */
@Service
public class InterviewServiceImpl implements InterviewService {

    @Autowired
    private ResumeClient resumeClient;

    @Override
    public ResultModel sendInterviewRD(FeedBackDto feedBackDto) {
        return resumeClient.sendInterviewRD(feedBackDto);
    }
}

Controller部分:

/**
 * Created by SYJ on 2017/4/25.
 */
@Controller
@RequestMapping(value = "/interview", produces = {"application/json;charset=UTF-8"})
public class InterviewController extends BaseController {

    @Autowired
    private InterviewService interviewService;

    /**
     * Created by SYJ on 2017/4/25.
     * @param request
     * @param invitationVo
     * @return
     */
    @RequestMapping(method = RequestMethod.POST, value = "/sendinterview", produces = {"application/json;charset=UTF-8"})
    @ResponseBody
    public ResultModel sendInterview(HttpServletRequest request, @RequestBody InvitationVo invitationVo) {
        return interviewService.sendInterviewRD(feedBackDto);
    }
}

如果觉得本文对您有帮助,不妨扫描下方微信二维码打赏点,您的鼓励是我前进最大的动力:

时间: 2024-10-26 23:52:56

使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务的相关文章

使用Spring Cloud Feign

使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务 在spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端.我们可以使用JDK原生的URLConnection.Apache的Http Client.Netty的异步HTTP Client, Spring的RestTemplate.但是,用起来最方便.最优雅的还是要属Feign了. Feign简介 Feign是一种声明式.模板化的HT

Bug集锦-Spring Cloud Feign调用其它接口报错

问题描述 Spring Cloud Feign调用其它服务报错,错误提示如下:Failed to instantiate [java.util.List]: Specified class is an interface. 解决方案 通过查询一些资料,得到的结论,是定义接口传递的参数时,没有用@RequestBody修饰,查看定义接口有用@RequestBogy修饰,Feign的接口实现里没有用@RequestBody修饰,添加后问题就解决了,以后还是要仔细看待每个问题. 原文地址:https:

笔记:Spring Cloud Feign 其他配置

请求压缩 Spring Cloud Feign 支持对请求与响应进行GZIP压缩,以减少通信过程中的性能损耗,我们只需要通过下面二个参数设置,就能开启请求与响应的压缩功能,yml配置格式如下: feign: compression: request: enabled: true response: enabled: true 同时,我们还能对请求压缩做一些更细致的设置,比如指定压缩的请求数据类型,并设置了请求压缩的大小下限,只有超过这个大小的请求才会对其进行压缩,示例如下: feign: com

笔记:Spring Cloud Feign Ribbon 配置

由于 Spring Cloud Feign 的客户端负载均衡是通过 Spring Cloud Ribbon 实现的,所以我们可以直接通过配置 Ribbon 的客户端的方式来自定义各个服务客户端调用的参数. 全局配置 全局配置的方法非常简单,我们可以i直接使用 ribbon.<key>=<value>的方式来设置 ribbon 的各项默认参数,比如,修改默认的客户端调用超时时间示例如下,使用 yml 格式配置: ribbon: ConnectionTimeout: 500 ReadT

微服务架构之spring cloud feign

在spring cloud ribbon中我们用RestTemplate实现了服务调用,可以看到我们还是需要配置服务名称,调用的方法 等等,其实spring cloud提供了更优雅的服务调用方式,就是这篇文章要讲解的spring cloud feign,feign内部已经集成了ribbon,所以不用再单独引用,只需要引用spring cloud feign即可. (一) 版本说明 a) Spring boot 2.0.6.RELEASE b) Spring cloud Finchley.SR2

Spring cloud Feign 深度学习与应用

简介 Spring Cloud Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单.Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数.格式.地址等信息.Feign会完全代理HTTP请求,开发时只需要像调用方法一样调用它就可以完成服务请求及相关处理.开源地址:https://github.com/OpenFeign/feign.Feign整合了Ribbon负载和Hystrix熔断,可以不再需要显式地

关于Spring Cloud Feign的一些记录!

学习Spring Cloud Feign过程中,相关资料都会反复强调:微服务调用的话(@FeignClient)  客户端方法的返回值和服务端方法的返回值还有方法名之类的都是要求一致的! 关于方法名是否一致经过验证,其实不是必须的,只要路径映射一直就可以了! feign客户端: @Autowired private EurekaServiceFeign eurekaServiceFeign; @GetMapping("/hello/{name}") @ResponseBody @Hys

笔记:Spring Cloud Feign Hystrix 配置

在 Spring Cloud Feign 中,除了引入了用户客户端负载均衡的 Spring Cloud Ribbon 之外,还引入了服务保护与容错的工具 Hystrix,默认情况下,Spring Cloud Feign 会为将所有 Feign客户端的方法都封装到 Hystrix 命令中进行服务保护,需要注意的是 Ribbon 的超时与 Hystrix 的超时是二个概念,需要让 Hystrix 的超时时间大于 Ribbon 的超时时间,否则 Hystrix 命令超时后,该命令直接熔断,重试机制就没

Spring Cloud Feign 组成和配置

### Feign的组成 | 接口 | 作用 | 默认值 | | ------------ | ------------ | ------------ | | `Feign.Builder` | Feign的入口 | `Feign.Builder` | | `Client` | Feign底层用什么去请求 | **和Ribbon配合时:**`LoadBalancerFeignClient` **不和Ribbon配合时:**`Fgien.Client.Default` | | `Contract`