Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

NY's 개발일기

[Spring Boot] WebClient POST 요청하기 본문

Study/Backend

[Spring Boot] WebClient POST 요청하기

developer_ny 2021. 10. 28. 03:20

※ Spring boot 프로젝트의 경우 Gradle 기반으로 생성되었습니다.

동작과정

build.gradle

WebClient 관련 dependency 추가

implementation 'org.springframework.boot:spring-boot-starter-webflux'

저장 후, 반드시 Refresh Gradle Project

StudentController

@RestController
public class StudentController {
    @Autowired
    private StudentService studentService;
    
    @PostMapping("/student/{studentId}")
    public String postStudentVerification(@PathVariable String studentId) throws SQLException {
    	return studentService.verification(studentId);
    }
}

StudentService

@Service
public class StudentService {
    private WebClient webClient;
    
    @PostConstruct
    public void initWebClient() {
    	webClient = WebClient.create("http://localhost:5000");
    }
    
    public String verification(String studentId) throws SQLException {
    	MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
        formData.add("studentId", studentId);
        
        return webClient.post()
                .uri("/identification")
                .contentType(MediaType.APPLICATION_FORM_URLENCODED)
                .body(BodyInserters.fromFormData(formData))
                .retrieve()
                .bodyToMono(String.class)
                .block();
    }
}

 

두 개의 웹 서버를 모두 실행시킨뒤,

Spring Server에 /student/{studentId} POST 요청을 보내면

Spring Server에서 WebClient를 통해 다른 서버에 /identification POST 요청을 보내고

(이때, body에 studentId가 포함된 formData를 함께 전송)

최종적으로 그 response를 반환하게 됩니다.