.net转Java学习笔记04-Feign调用第三方接口

315 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

之前调用海康的接口 ,人家封装了自己的jar,用起来很方便 但是这周要调用充电桩接口,那个jar不兼容只能自己写方法

网上一搜都是项目的工具包下导入HttpClientUtil这个工具类,然后吧嗒吧嗒一大堆,感觉调用个接口得类死,这也不比。net快捷啊 不是java生态天下第一,狂吹java大法好吗 好在项目不急 ,自己慢慢在技术栈找 ,最后还真找到了 Feign注解 本来是调用微服务之间的接口,但是刚好也能顺便解决我调用第三方的接口,果然java大法好

1.首先的用spring家族的框架SpringBoot+SpringCloud

这块直接工具自动搭建,为了方便我把自己用的pom贴出来

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cps_parent</artifactId>
        <groupId>com.jydw</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>cps_cdz</artifactId>
    <dependencies>
    <!--  与数据库操作相关的依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <!-- 数据源 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.6</version>
    </dependency>
    <!--  mysql -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
        <version>8.0.11</version>
    </dependency>
    <!--这个依赖已经包括JDBC依赖 generator+mybatis-->
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.3.5</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.0</version>
    </dependency>
    <!--swagger-->
    <dependency>
        <groupId>com.spring4all</groupId>
        <artifactId>swagger-spring-boot-starter</artifactId>
        <version>1.7.0.RELEASE</version>
    </dependency>
    <!--lombok用来简化实体类:需要安装lombok插件-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <!--热部署-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${joda-time.version}</version>
    </dependency>

    <!--采用Feign进行消费 充电桩接口-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-feign</artifactId>
    </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>
                <configuration>
                    <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.46</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
</project>

2.加上feign的依赖

上面的pom已经包含了 org.springframework.cloud spring-cloud-starter-openfeign

3.启动类加上@EnableFeignClients注解

在这里插入图片描述

4.新建service加上FeignClient注解

@FeignClient(name = "feignSerive", url = "${url}")
public interface FeignService {
    @RequestMapping(value = "/using_state",method = RequestMethod.GET)
    public String getState(@RequestParam(value = "token") String token);

    @RequestMapping(value = "/energy_bill",method = RequestMethod.GET)
    public String getEnergy(@RequestParam(value = "token") String token
    ,@RequestParam(value = "startTime") String startTime
    ,@RequestParam(value = "endTime") String endTime);
}

这上面FeignClient注解有两个参数 一个是name 一个是url 我的url是写在配置文件里 你也可以直接写http://47.110.12.97/apiservices/charging这种接口地址

后面的就和写rest接口一样了 方法名加RequestMapping注解 里面写接口名字和参数

5.在RestController调用

最后一步就和简单的调用服务处方法一样了

@Autowired
    FeignService feignService;
    @Value("${token}")
    private String token;

注入服务处方法 直接调用 没及时参数即可 在这里插入图片描述

总结就是加上依赖,服务处直接写个地址 后面就和之前的代码风格完全一致 无论是代码量还是代码管理都比工具类的那种方法好上十倍 果然前人大树好乘凉