MyFeignClient.java 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package com.sf.eurekaclientdemo1.feign;
  2. import com.sf.eurekaclientdemo1.dto.User;
  3. import org.springframework.cloud.openfeign.FeignClient;
  4. import org.springframework.web.bind.annotation.*;
  5. import java.util.Map;
  6. /**
  7. * 可以将要调用的服务名配置在当前的接口中
  8. * eureka-client-supplier-demo
  9. * 再将要调用的接口名 配置在方法名之上
  10. *
  11. * @GetMapping("/clientDemo2") 将一个要调用的微服务的一个接口
  12. * 分别抽象为微服务对应类
  13. * 接口对应方法
  14. */
  15. // http://eureka-client-supplier-demo
  16. // MyFeignClient 通过Feign 构造的Http客户端
  17. // @FeignClient 可以把当前类注入到容器中
  18. @FeignClient("eureka-client-supplier-demo")
  19. public interface MyFeignClient {
  20. // http://eureka-client-supplier-demo/clientDemo2
  21. @GetMapping("/clientDemo2")
  22. String clientDemo2();
  23. // String clientDemo2();
  24. // http://eureka-client-supplier-demo/testId/111
  25. @GetMapping("/testId/{id}")
  26. String testId(@PathVariable("id") String id);
  27. // http://eureka-client-supplier-demo/testId/111
  28. @GetMapping("/testParam")
  29. String testParam(@RequestParam("param") String param);
  30. // http://eureka-client-supplier-demo/testUser
  31. // 错误的用法
  32. @GetMapping("/testUser")
  33. String testUserError(User user);
  34. // http://eureka-client-supplier-demo/testUser
  35. // 正确的用法之一 我们可以通过不同的方法调用同一个接口
  36. @GetMapping("/testUser")
  37. String testUser(@RequestParam("name") String name, @RequestParam("desc") String desc);
  38. // http://eureka-client-supplier-demo/testUser
  39. // 正确的用法之二 使用map传递参数 注意此时也必须有@RequestParam
  40. @GetMapping("/testUser")
  41. String testUser(@RequestParam Map<String, Object> map);
  42. // 计算的接口
  43. @GetMapping("/randomInt")
  44. String randomInt(@RequestParam Map<String, Object> map);
  45. // 处理post请求
  46. @PostMapping("/testPost")
  47. String testPost(@RequestBody User user);
  48. // 处理header
  49. // 如果使用注解时 没有明确属性名称 默认给value属性赋值
  50. // 如果要给两个以上的属性赋值 value属性需要明确标识
  51. @GetMapping(value = "/token", headers = {"token=123456"})
  52. String token();
  53. @GetMapping("/token")
  54. String token(@RequestHeader("token") String token);
  55. // 断路器相关
  56. @GetMapping("/circuit/{id}")
  57. String circuit(@PathVariable("id") Integer id);
  58. // 链路追踪相关
  59. @GetMapping("/micrometer/{id}")
  60. String micrometer(@PathVariable("id") Integer id);
  61. }