案例 出自 图灵学院,我自己学了一下,然后整了了一下

pom依赖

  1. <!-- feign调用依赖 -->
  2. <dependency>
  3. <groupId>com.netflix.feign</groupId>
  4. <artifactId>feign-core</artifactId>
  5. <version>8.18.0</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>com.netflix.feign</groupId>
  9. <artifactId>feign-jackson</artifactId>
  10. <version>8.18.0</version>
  11. </dependency>

feign接口

  1. import com.tuling.common.utils.R;
  2. import com.feigndemo.vo.OrderVo;
  3. import feign.Headers;
  4. import feign.Param;
  5. import feign.RequestLine;
  6. import org.springframework.web.bind.annotation.RequestBody;
  7. public interface RemoteService {
  8. @Headers({"Content-Type: application/json","Accept: application/json"})
  9. @RequestLine("GET /order/findOrderByUserId/{userId}") //feign自带的注解
  10. R findOrderByUserId(@Param("userId") Integer userId);
  11. /**
  12. * 对象名字不一定需要一样
  13. * 参数在request对象中,然后会帮我们解析,封装到对象里面,所以对象名字不需要一样,里面的字段一样就行了.
  14. * "Accept: application/json" //指定当前接口接收的json格式的数据
  15. */
  16. @Headers({"Content-Type: application/json","Accept: application/json"})
  17. @RequestLine("POST /order/save")
  18. public R save(@RequestBody OrderVo order);
  19. }

原生feignAPI调用

  1. import com.feigndemo.vo.OrderVo;
  2. import feign.Feign;
  3. import feign.Request;
  4. import feign.jackson.JacksonDecoder;
  5. import feign.jackson.JacksonEncoder;
  6. public class FeignDemo {
  7. public static void main(String[] args) {
  8. //基于json
  9. RemoteService service = Feign.builder()
  10. .encoder(new JacksonEncoder()) // 编码方式
  11. .decoder(new JacksonDecoder()) // 解码方式
  12. .options(new Request.Options(1000, 3500))//设置超时时间
  13. //.retryer(new Retryer.Default(5000, 5000, 3))
  14. .target(RemoteService.class, //代理对象
  15. "http://localhost:8020/"); //目标地址
  16. int userId = 4;
  17. OrderVo vo = new OrderVo();
  18. vo.setCommodityCode("C000003");
  19. vo.setUserId(userId);
  20. vo.setCount(5);
  21. vo.setAmount(200);
  22. // 保存操作
  23. System.out.println(service.save(vo));
  24. System.out.println(service.findOrderByUserId(userId)); //查询操作
  25. }
  26. }

结果:

{msg=success, code=0}
{msg=success, code=0, orders=[{id=5, userId=4, commodityCode=C000003, count=5, amount=200}, {id=6, userId=4, commodityCode=C000003, count=5, amount=200}]}

代码地址

https://gitee.com/zjj19941/ZJJ_Neaten5.10/tree/master/ZJJ_Feign/protogenesis-feign