NY's 개발일기
[Spring Boot] WebClient POST 요청하기 본문
※ 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를 반환하게 됩니다.