计算机系统应用教程网站

网站首页 > 技术文章 正文

@FeignClient注解 实现 远程Restful 服务的调用

btikc 2024-09-10 12:02:21 技术文章 14 ℃ 0 评论

看着题目是不是显得很高大上,但是感觉实际项目中使用有点鸡肋,只是公司项目中大规模使用这个东西,那就来看看吧~~

本文主要介绍@FeignClient注解,使用该注解去开发HTTP RESTful接口客户端。

  1. 首先构建一个简单 spring boot web 工程,此处省略。
  2. 加入项目依赖。

调整依赖的版本,确保项目启动正常,本实例 demo 中版本如下:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
   <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.1.2.RELEASE</version>
        </dependency>

3、实现代码,此处以一个公共免费的证件号码的解析为远程服务例子。

身份证信息查询

启动类加入注解

@SpringBootApplication
@EnableFeignClients
public class SpringbootFeignClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootFeignClientApplication.class, args);
    }

}

服务接口类

@FeignClient(name = "card-service",url = "http://api.guaqb.cn")
public interface CardService {
    /**
     * 解析身份证信息
     * @param id
     * @return
     */
    @RequestMapping(value = "/music/id/card.php",method = RequestMethod.GET)
    String resolve(@RequestParam(value = "id") String id);
}

服务请求类

@RestController
public class CardController {

    @Resource
    private CardService cardService;

    @GetMapping("/test/{cardNo}")
    public String remoteApi(@PathVariable("cardNo") String cardNo){
        String resolve = cardService.resolve(cardNo);
        System.out.println(resolve);
        return resolve;
    }
}

请求地址:

http://127.0.0.1:8080/test/身份证号码

返回结果:

{"msg":"ok","region":"山东xxxx","birthday":"1986-06-10","gender":"男","age":35,"adult":"成年人","zodiac":"虎","constellation":"双子座"}

其实实现思路也很简单就是生成一个代理类,请求地址 参数指向远程服务接口。



Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表