From ec0b628fb40376285315f55be22458a2a68b9feb Mon Sep 17 00:00:00 2001 From: Amitabh Tiwari Date: Fri, 29 Apr 2022 18:42:53 +0530 Subject: [PATCH] Initial Changes for RequestLine --- .../openfeign/client/EmployeeClient.java | 13 +++++++++++ .../controller/EmployeeController.java | 22 +++++++++++++++++++ .../cloud/openfeign/model/Employee.java | 15 +++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/EmployeeClient.java create mode 100644 spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/controller/EmployeeController.java create mode 100644 spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/model/Employee.java diff --git a/spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/EmployeeClient.java b/spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/EmployeeClient.java new file mode 100644 index 0000000000..67ff8b4f9a --- /dev/null +++ b/spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/client/EmployeeClient.java @@ -0,0 +1,13 @@ +package com.baeldung.cloud.openfeign.client; + +import com.baeldung.cloud.openfeign.model.Employee; +import feign.Headers; +import feign.Param; +import feign.RequestLine; + +public interface EmployeeClient { + + @RequestLine("GET /empployee/{id}?active={isActive}") + @Headers("Content-Type: application/json") + Employee getEmployee(@Param long id, @Param boolean isActive); +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/controller/EmployeeController.java b/spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/controller/EmployeeController.java new file mode 100644 index 0000000000..65897ad48e --- /dev/null +++ b/spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/controller/EmployeeController.java @@ -0,0 +1,22 @@ +package com.baeldung.cloud.openfeign.controller; + +import com.baeldung.cloud.openfeign.client.EmployeeClient; +import com.baeldung.cloud.openfeign.model.Employee; +import feign.Feign; +import feign.form.spring.SpringFormEncoder; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class EmployeeController { + + private static final String HTTP_FILE_EMPLOYEE_URL = "http://localhost:8081"; + + @GetMapping("/employee/{id}") + public Employee getEmployee(@RequestParam("id") long id) { + EmployeeClient employeeResource = Feign.builder().encoder(new SpringFormEncoder()) + .target(EmployeeClient.class, HTTP_FILE_EMPLOYEE_URL); + return employeeResource.getEmployee(id, true); + } +} diff --git a/spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/model/Employee.java b/spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/model/Employee.java new file mode 100644 index 0000000000..7b8ed1232b --- /dev/null +++ b/spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/model/Employee.java @@ -0,0 +1,15 @@ +package com.baeldung.cloud.openfeign.model; + +public class Employee { + + private Long id; + private String name; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +}