diff --git a/lab-58/lab-58-feign-demo/pom.xml b/lab-58/lab-58-feign-demo/pom.xml index e4b222f7..454547be 100644 --- a/lab-58/lab-58-feign-demo/pom.xml +++ b/lab-58/lab-58-feign-demo/pom.xml @@ -42,11 +42,18 @@ feign-core 11.0 + io.github.openfeign feign-gson 11.0 + + + io.github.openfeign + feign-spring4 + 11.0 + diff --git a/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/config/FeignConfig.java b/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/config/FeignConfig.java index f0f261f7..c6dab267 100644 --- a/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/config/FeignConfig.java +++ b/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/config/FeignConfig.java @@ -1,8 +1,11 @@ package cn.iocoder.springboot.lab58.feigndemo.config; import cn.iocoder.springboot.lab58.feigndemo.feign.UserServiceFeignClient; +import cn.iocoder.springboot.lab58.feigndemo.feign.UserServiceFeignClient02; import feign.Feign; import feign.gson.GsonDecoder; +import feign.gson.GsonEncoder; +import feign.spring.SpringContract; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -12,8 +15,18 @@ public class FeignConfig { @Bean public UserServiceFeignClient userServiceFeignClient() { return Feign.builder() + .encoder(new GsonEncoder()) .decoder(new GsonDecoder()) .target(UserServiceFeignClient.class, "http://127.0.0.1:18080"); // 目标地址 } + @Bean + public UserServiceFeignClient02 userServiceFeignClient02() { + return Feign.builder() + .encoder(new GsonEncoder()) + .decoder(new GsonDecoder()) + .contract(new SpringContract()) + .target(UserServiceFeignClient02.class, "http://127.0.0.1:18080"); // 目标地址 + } + } diff --git a/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/controller/DemoController.java b/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/controller/DemoController.java index 61a5f4d1..c15050d7 100644 --- a/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/controller/DemoController.java +++ b/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/controller/DemoController.java @@ -1,6 +1,7 @@ package cn.iocoder.springboot.lab58.feigndemo.controller; import cn.iocoder.springboot.lab58.feigndemo.feign.UserServiceFeignClient; +import cn.iocoder.springboot.lab58.feigndemo.feign.request.UserAddRequest; import cn.iocoder.springboot.lab58.feigndemo.feign.response.UserResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -38,4 +39,10 @@ public class DemoController { return userServiceFeignClient.list(queryMap); } + @GetMapping("/test03") + public Integer test03() { + return userServiceFeignClient.add(new UserAddRequest() + .setName("昵称").setGender(1)); + } + } diff --git a/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/controller/DemoController02.java b/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/controller/DemoController02.java new file mode 100644 index 00000000..755d7418 --- /dev/null +++ b/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/controller/DemoController02.java @@ -0,0 +1,46 @@ +package cn.iocoder.springboot.lab58.feigndemo.controller; + +import cn.iocoder.springboot.lab58.feigndemo.feign.UserServiceFeignClient02; +import cn.iocoder.springboot.lab58.feigndemo.feign.request.UserAddRequest; +import cn.iocoder.springboot.lab58.feigndemo.feign.response.UserResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/demo02") +public class DemoController02 { + + @Autowired + private UserServiceFeignClient02 userServiceFeignClient; + + @GetMapping("/test01") + public UserResponse test01() { + return userServiceFeignClient.get(1); +// System.out.println("编号:" + user.getId()); +// System.out.println("昵称:" + user.getName()); +// System.out.println("性别:" + user.getGender()); + } + + @GetMapping("/test02A") + public List test02A() { + return userServiceFeignClient.list("你猜", null); + } + +// @GetMapping("/test02B") +// public List test02B() { +// Map queryMap = new HashMap<>(); +// queryMap.put("name", "昵称"); +// return userServiceFeignClient.list(queryMap); +// } + + @GetMapping("/test03") + public Integer test03() { + return userServiceFeignClient.add(new UserAddRequest() + .setName("昵称").setGender(1)); + } + +} diff --git a/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/feign/UserServiceFeignClient.java b/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/feign/UserServiceFeignClient.java index 687e4ead..d5c88c66 100644 --- a/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/feign/UserServiceFeignClient.java +++ b/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/feign/UserServiceFeignClient.java @@ -1,13 +1,15 @@ package cn.iocoder.springboot.lab58.feigndemo.feign; +import cn.iocoder.springboot.lab58.feigndemo.feign.request.UserAddRequest; import cn.iocoder.springboot.lab58.feigndemo.feign.response.UserResponse; -import feign.Param; -import feign.QueryMap; -import feign.RequestLine; +import feign.*; import java.util.List; import java.util.Map; +/** + * 基于 Contract.Default 默认契约 + */ public interface UserServiceFeignClient { // 获得用户详情 @@ -21,4 +23,8 @@ public interface UserServiceFeignClient { @RequestLine("GET /user/list") List list(@QueryMap Map queryMap); + @RequestLine("POST /user/add") + @Headers("Content-Type: application/json") + Integer add(UserAddRequest request); + } diff --git a/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/feign/UserServiceFeignClient02.java b/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/feign/UserServiceFeignClient02.java new file mode 100644 index 00000000..f1057299 --- /dev/null +++ b/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/feign/UserServiceFeignClient02.java @@ -0,0 +1,28 @@ +package cn.iocoder.springboot.lab58.feigndemo.feign; + +import cn.iocoder.springboot.lab58.feigndemo.feign.request.UserAddRequest; +import cn.iocoder.springboot.lab58.feigndemo.feign.response.UserResponse; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +public interface UserServiceFeignClient02 { + + // 获得用户详情 + @GetMapping("/user/get") + UserResponse get(@RequestParam("id") Integer id); + + @GetMapping("/user/list") + List list(@RequestParam("name") String name, + @RequestParam("gender") Integer gender); + +// @RequestLine("GET /user/list") +// List list(@QueryMap Map queryMap); + + @PostMapping(value = "/user/add", consumes = "application/json") + Integer add(@RequestBody UserAddRequest request); + +} diff --git a/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/feign/request/UserAddRequest.java b/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/feign/request/UserAddRequest.java new file mode 100644 index 00000000..bafa0383 --- /dev/null +++ b/lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/feign/request/UserAddRequest.java @@ -0,0 +1,28 @@ +package cn.iocoder.springboot.lab58.feigndemo.feign.request; + +/** + * User 添加 Request + */ +public class UserAddRequest { + + private String name; + private Integer gender; + + public String getName() { + return name; + } + + public UserAddRequest setName(String name) { + this.name = name; + return this; + } + + public Integer getGender() { + return gender; + } + + public UserAddRequest setGender(Integer gender) { + this.gender = gender; + return this; + } +} diff --git a/lab-58/lab-58-user-service/src/main/java/cn/iocoder/springboot/lab58/userservice/controller/UserController.java b/lab-58/lab-58-user-service/src/main/java/cn/iocoder/springboot/lab58/userservice/controller/UserController.java index 7b61783f..4693005b 100644 --- a/lab-58/lab-58-user-service/src/main/java/cn/iocoder/springboot/lab58/userservice/controller/UserController.java +++ b/lab-58/lab-58-user-service/src/main/java/cn/iocoder/springboot/lab58/userservice/controller/UserController.java @@ -1,10 +1,8 @@ package cn.iocoder.springboot.lab58.userservice.controller; +import cn.iocoder.springboot.lab58.userservice.request.UserAddRequest; import cn.iocoder.springboot.lab58.userservice.response.UserResponse; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; @@ -30,4 +28,11 @@ public class UserController { return users; } + @PostMapping("/add") + public Integer add(@RequestBody UserAddRequest request) { + System.out.println("昵称:" + request.getName()); + System.out.println("性别:" + request.getGender()); + return 1; + } + } diff --git a/lab-58/lab-58-user-service/src/main/java/cn/iocoder/springboot/lab58/userservice/request/UserAddRequest.java b/lab-58/lab-58-user-service/src/main/java/cn/iocoder/springboot/lab58/userservice/request/UserAddRequest.java new file mode 100644 index 00000000..931434c7 --- /dev/null +++ b/lab-58/lab-58-user-service/src/main/java/cn/iocoder/springboot/lab58/userservice/request/UserAddRequest.java @@ -0,0 +1,28 @@ +package cn.iocoder.springboot.lab58.userservice.request; + +/** + * User 添加 Request + */ +public class UserAddRequest { + + private String name; + private Integer gender; + + public String getName() { + return name; + } + + public UserAddRequest setName(String name) { + this.name = name; + return this; + } + + public Integer getGender() { + return gender; + } + + public UserAddRequest setGender(Integer gender) { + this.gender = gender; + return this; + } +} diff --git a/lab-58/lab-58-user-service/src/main/java/cn/iocoder/springboot/lab58/userservice/response/UserResponse.java b/lab-58/lab-58-user-service/src/main/java/cn/iocoder/springboot/lab58/userservice/response/UserResponse.java index 537a1e9e..bb1b4375 100644 --- a/lab-58/lab-58-user-service/src/main/java/cn/iocoder/springboot/lab58/userservice/response/UserResponse.java +++ b/lab-58/lab-58-user-service/src/main/java/cn/iocoder/springboot/lab58/userservice/response/UserResponse.java @@ -1,5 +1,8 @@ package cn.iocoder.springboot.lab58.userservice.response; +/** + * User 信息 Response + */ public class UserResponse { private Integer id;