Skip to content

Commit 9e4aa94

Browse files
m3k0813Seungkiii
authored andcommitted
fix(SCRUM-198): RestTemplate 제거
1 parent 25b3c82 commit 9e4aa94

1 file changed

Lines changed: 27 additions & 33 deletions

File tree

src/main/java/com/team_nebula/nebula/domain/chatbot/service/ChatbotServiceImpl.java

Lines changed: 27 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,8 @@
99
import org.springframework.beans.factory.annotation.Value;
1010
import org.springframework.http.HttpEntity;
1111
import org.springframework.http.HttpHeaders;
12-
import org.springframework.http.HttpMethod;
1312
import org.springframework.http.MediaType;
14-
import org.springframework.http.ResponseEntity;
1513
import org.springframework.stereotype.Service;
16-
import org.springframework.web.client.RestTemplate;
1714
import org.springframework.web.reactive.function.client.WebClient;
1815
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
1916

@@ -36,7 +33,6 @@
3633
@RequiredArgsConstructor
3734
public class ChatbotServiceImpl implements ChatbotService {
3835

39-
private final RestTemplate restTemplate = new RestTemplate();
4036
private final ObjectMapper objectMapper;
4137
private final WebClient webClient;
4238

@@ -54,16 +50,17 @@ public SessionResponseDTO createSession(Long userId, SessionRequestDTO request)
5450
Map<String, Object> requestBody = Map.of("title", request.getTitle());
5551
HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(requestBody, headers);
5652

57-
ResponseEntity<String> response = restTemplate.exchange(
58-
url,
59-
HttpMethod.POST,
60-
requestEntity,
61-
String.class
62-
);
53+
String response = webClient.post()
54+
.uri(url)
55+
.contentType(MediaType.APPLICATION_JSON)
56+
.bodyValue(requestBody)
57+
.retrieve()
58+
.bodyToMono(String.class)
59+
.block();
6360

64-
log.info("AI 서버 응답: {}", response.getBody());
61+
log.info("AI 서버 응답: {}", response);
6562

66-
String sessionId = extractSessionId(response.getBody());
63+
String sessionId = extractSessionId(response);
6764

6865
return SessionResponseDTO.builder()
6966
.sessionId(sessionId)
@@ -94,19 +91,16 @@ public List<SessionListResponseDTO> getSessions(Long userId, int limit, int offs
9491
String url = String.format("%s/chat/sessions?user_id=%d&limit=%d&offset=%d", aiChatUrl, userId, limit,
9592
offset);
9693

97-
HttpHeaders headers = new HttpHeaders();
98-
headers.setContentType(MediaType.APPLICATION_JSON);
99-
100-
ResponseEntity<String> response = restTemplate.exchange(
101-
url,
102-
HttpMethod.GET,
103-
new HttpEntity<>(headers),
104-
String.class
105-
);
94+
String response = webClient.get()
95+
.uri(url)
96+
.accept(MediaType.APPLICATION_JSON)
97+
.retrieve()
98+
.bodyToMono(String.class)
99+
.block();
106100

107-
log.info("AI 서버 세션 목록 응답: {}", response.getBody());
101+
log.info("AI 서버 세션 목록 응답: {}", response);
108102

109-
return parseSessionsFromResponse(response.getBody());
103+
return parseSessionsFromResponse(response);
110104

111105
} catch (Exception e) {
112106
log.error("세션 목록 조회 중 오류 발생", e);
@@ -166,13 +160,13 @@ public SseEmitter chatStream(Long userId, ChatRequestDTO request) {
166160
.subscribe(
167161
chunk -> {
168162
try {
169-
163+
log.info("Received chunk: {}", chunk);
170164
if (!chunk.isBlank()) {
171165
if (chunk.startsWith("data: ")) {
172166
chunk = chunk.substring(6);
173167
}
174168
emitter.send(SseEmitter.event()
175-
.data(chunk, MediaType.APPLICATION_JSON_UTF8));
169+
.data(chunk));
176170
}
177171
} catch (Exception e) {
178172
log.error("SSE 전송 중 오류", e);
@@ -208,16 +202,16 @@ public List<CharResponseDTO> getSessionMessages(Long userId, String sessionId) {
208202
HttpHeaders headers = new HttpHeaders();
209203
headers.setContentType(MediaType.APPLICATION_JSON);
210204

211-
ResponseEntity<String> response = restTemplate.exchange(
212-
url,
213-
HttpMethod.GET,
214-
new HttpEntity<>(headers),
215-
String.class
216-
);
205+
String response = webClient.get()
206+
.uri(url)
207+
.accept(MediaType.APPLICATION_JSON)
208+
.retrieve()
209+
.bodyToMono(String.class)
210+
.block();
217211

218-
log.info("AI 서버 메시지 응답: {}", response.getBody());
212+
log.info("AI 서버 메시지 응답: {}", response);
219213

220-
JsonNode root = objectMapper.readTree(response.getBody());
214+
JsonNode root = objectMapper.readTree(response);
221215
JsonNode data = root.path("data");
222216

223217
String receivedSessionId = getText(data, "session_id");

0 commit comments

Comments
 (0)