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;