Toss에게 결제 승인 요청을 보내는 코드를 구현하던 중,
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.tosspayments.com/v1/payments/confirm"))
.header("Authorization", "Basic dGVzdF9za196WExrS0V5cE5BcldtbzUwblgzbG1lYXhZRzVSOg==")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("{\"paymentKey\":\"{PAYMENT_KEY}\",\"amount\":100,\"orderId\":\"Y55C1pNjH81_CPUt5BYOs\"}"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Toss는 이렇게 구현이 되어있는걸 보고 HttpClient와 RestTemplate 중 어떤것을 사용해야하나... 고민이 많았다.
왜냐하면 이 부분은 결제니까 보안에 좀 더 민감해야한다고 생각했고, RestTemplate을 사용하면 Spring Boot에게 의존하게 되니 HttpClient를 사용하는것이 더 좋은 방법 아닐까..? 생각하게 되었다.
그런데 더 찾아보니 최근엔 RestTemplate 대신 WebClient를 Spring에서 권장한다는 내용을 보고 세개의 차이가 궁금해져서 찾아보았다.
RestTemplate을 사용하기로 결정했다.