'Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON'
fetch(/dm/rooms/${dmId}/messages?fromMessageId=${fromMessageId}
부분에 fromMessageId가 Null이라 오류 발생📌 Controller
@GetMapping("/dm/rooms/{dmId}/messages")
@ResponseBody
public List<DmMessageDto> findAll(
@PathVariable Long dmId, @AuthenticationPrincipal SecurityUser user, @RequestParam(defaultValue = "000000000000000000000000") String fromMessageId) {
List<DmMessageDto> dmMessageDtos =
dmMessageService.getByDmIdAndUserIdAndFromId(dmId, user.getId(), fromMessageId);
return dmMessageDtos;
}
📌 Service
public List<DmMessageDto> getByDmIdAndUserIdAndFromId(Long dmId, Long userId, String fromMessageId) {
Dm dm = dmService.findByDmId(dmId);
DmUser dmuser = dm.getDmUsers().stream()
.filter(dmUser -> dmUser.getUser().getId().equals(userId))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("오류 발생"));
List<DmMessage> dmMessages = dmMessageRepository.findByDmId(dmId);
List<DmMessage> list = dmMessages.stream()
.filter(dmMessage -> new ObjectId(dmMessage.getId()).compareTo(new ObjectId(fromMessageId)) > 0)
.sorted(Comparator.comparing(DmMessage::getId))
.collect(Collectors.toList());
return DmMessageDto.fromDmMessages(list);
}
📌 View(JavaScript)
let fromMessageId = "000000000000000000000000";
function getChatMessages() {
fetch(`/dm/rooms/${dmId}/messages?fromMessageId=${fromMessageId}`, {
method: "GET",
headers: {
"Content-Type": "application/json",
"Accept": "application/json"
}})
.then(response => {
return response.text().then(text => {
try {
return JSON.parse(text);
} catch (e) {
console.error("Failed to parse JSON:", text);
throw e;
}
});
})
.then(body => {
drawMessages(body);
console.log(body);
});
}