feign学习

前言

Feigin是一个声明式HTTP客户端,简化了远程调用,让编写HTTP客户端变得简单。
使用自定义接口,然后在上面添加注解,感知上就像调用一个接口一样。

github地址

Feign的简单实现

maven依赖

  <!-- feign核心包 -->
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-core</artifactId>
            <version>10.4.0</version>
        </dependency>
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-jackson</artifactId>
            <version>10.2.0</version>
        </dependency>
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
            <version>10.2.0</version>
        </dependency>

请求接口


import com.feign.model.User;
import feign.Headers;
import feign.Param;
import feign.RequestLine;

public interface IService {
   

    @RequestLine("GET /user/info?id={id}")
    @Headers("Content-Type: application/json")
    User userInfo(@Param(value = "id") String id);
}

配置类


import feign.Feign;
import feign.Logger;
import feign.Request;
import feign.Retryer;
import feign.httpclient.ApacheHttpClient;
import feign.jackson.JacksonDecoder;
import feign.jackson.JacksonEncoder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FeignService {
   

    @Bean
    public IService getFeignService() {
   
        return Feign.builder()
                .client(new ApacheHttpClient())
                .encoder(new JacksonEncoder())
                .decoder(new JacksonDecoder())
                .logger(new Logger.NoOpLogger())
                .logLevel(Logger.Level.FULL)
                .retryer(Retryer.NEVER_RETRY)
                .options(new Request.Options(1000, 3500))
                .target(IService.class, "http://localhost:8080");
    }
}

Controller


import com.feign.model.User;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user")
public class UserController {
   

    @GetMapping("/info")
    @ResponseBody
    public User info(@RequestParam("id") String id) {
   

        return User.of().setId(id)
                .setName("xixixi");
    }
}

调用Test


import
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值