前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每天20分钟之feign

每天20分钟之feign

原创
作者头像
李子健
修改2022-07-24 13:51:56
1910
修改2022-07-24 13:51:56
举报
文章被收录于专栏:每日一善每日一善

feign提供的功能

java支持的接口调用方式

  • httpclient
  • okhttp
  • httpURLConnection
  • RestTemplate

feign对各类http调用包进行了抽象,我们不必自己去调用http包,feign进行了封装

feign的使用

代码语言:txt
复制
spring.application.name=eureka-client-front
server.port=7012

eureka.client.serviceUrl.defaultZone=http://tom:123456@localhost:6010/eureka/,http://tom:123456@localhost:6020/eureka/
eureka.instance.preferIpAddress=true
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
eureka.client.healthcheck.enabled=true
eureka.instance.lease-expiration-duration-in-seconds=5
eureka.instance.lease-renewal-interval-in-seconds=15

eureka.instance.metadata-map.yuantiandi=tom

ribbon.eureka.enabled=true

logging.level.com.cxytiandi.feign_demo.remote.UserRemoteClient=DEBUG

feign.httpclient.enabled=false
feign.okhttp.enabled=true
feign.client.config.eureka-client-user.connect-timeout=1000
feign.client.config.eureka-client-user.readTimeout=1000




@FeignClient(value="eureka-client-user", configuration= FeignConfiguration.class)
public interface UserInfoClientApi {

    @GetMapping("/user/{uid}")
    public String info(@PathVariable long uid);
}


@Slf4j
public class FeignAuthInterceptor implements RequestInterceptor {

    public FeignAuthInterceptor() {

    }

    @Override
    public void apply(RequestTemplate template) {
        log.info("拦截器生效了");
    }
}
@Configuration
public class FeignConfiguration {
    /**
     * 日志级别
     *
     * @return
     */
    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }

    @Bean
    public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
        return new BasicAuthRequestInterceptor("tom", "123456");
    }

    @Bean
    public FeignAuthInterceptor feignBasicAuthRequestInterceptor() {
        return new FeignAuthInterceptor();
    }

}

直接使用openfeign

代码语言:txt
复制
package cn.beckbi;

import feign.Param;
import feign.RequestLine;


public interface InfoApi {

    @RequestLine("GET /user/{uid}")
    String info(@Param(value = "uid") long uid);

}

@RestController
public class HiController {

    @GetMapping("/hi")
    public String hi() {
         InfoApi infoApi = HiController.getRestClient(InfoApi.class, "http://127.0.0.1:7010/");
         return infoApi.info(123456L);
    }

    public static <T> T getRestClient(Class<T> apiType, String url) {
        return Feign.builder().target(apiType, url);
    }

}

附录

实现的代码见:https://github.com/beckbikang/spring-cloud

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • feign提供的功能
  • feign的使用
  • 直接使用openfeign
  • 附录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档