노트북 생활을 청산하고 데스크탑으로 돌아왔다.
노트북에서 인텔리제이를 돌리면 발열과 배터리가 감당이 안돼서
어쩔 수 없이 NestJS를 이용해서 테스트를 진행했는데
데스크탑에서는 인텔리제이랑 VSCode랑 크롬이랑
이것저것 다 띄워도 문제가 없기 때문에
이제 가내수공업으로 만든 NestJS 서버는 치워두고
팀원들이 만든 Spring 서버를 사용해서 테스트를 진행할 수 있게 되었다.
그동안은 NestJS에서 테스트한 코드를 test 브랜치에 머지하면
팀원들이 pull 해서 직접 테스트를 진행하고
오류를 캡쳐해서 보내줬었는데
이제 직접 테스트하고 수정할 수 있게 되어서 능률이 많이 올랐다.
오늘 처음으로 테스트해본 내용은
채팅방 생성 기능이다.
우리 프로젝트에서는 채팅방 생성 시 채팅방 제목과 썸네일을 POST하도록 하였는데
아래와 같이 코드를 작성하니 오류가 발생했다.
axios
.post("http://localhost:8080/chat/rooms", formData)
.then((res) => {
console.log(res.data);
})
.catch((err) => {
console.log(err);
});
오류의 내용은 Content-Type 'application/json' is not supported 였다.
content type이 json인 것을 지원하지 않는다는 뜻 같은데
그래서 코드를 아래와 같이 수정해줬다.
axios
.post("http://localhost:8080/chat/rooms", formData, {
headers: {
"Content-Type": "multipart/form-data",
},
})
이번에는 아래와 같이
Content-Type 'application/octet-stream' is not supported
오류가 발생했다.
아니 application/json 타입은 지원하지 않는대서 수정해줬더니
이번엔 application/octet-stream 타입을 지원하지 않는다고 하니까
잠시 뭐 어쩌라고 싶었지만
침착하게 코드를 뜯어보니 내가 보낸 roomName과 imageUrl의 Content-Type을
서로 다르게 지정해줘야 정상적으로 POST가 가능한 것 같았다.
POST하기 위한 데이터의 Content-Type을 서로 다르게 지정하는 방법은
blob이라는 친구를 사용하면 된다길래 재빨리 적용해보았다.
우선 blob에 대해서 간단하게 설명하자면,
내가 POST하고자 하는 데이터의 type을 개별지정해주는 기능을 한다.
아래는 blob과 관련된 코드가 포함된 POST를 위한 전체코드이다.
const formData = new FormData();
const changedImgData = new Blob([imgUrl], { type: "multipart/form-data" });
formData.append("image", changedImgData);
const roomData = JSON.stringify({ roomName: roomName });
const changedRoomData = new Blob([roomData], { type: "application/json" });
formData.append("chatRoomDto", changedRoomData);
axios
.post("http://localhost:8080/chat/rooms", formData)
.then((res) => {
console.log(res.data);
})
.catch((err) => {
console.log(err);
});
우선 FormData를 정의해주고
blob을 이용해서 ImgData와 RoomData의 타입을 개별 지정해주었다.
그리고 blob으로 개별지정한 데이터들을 FormData에 append해주었다.
이후 FormData를 포스트해주었더니 정상적으로 동작했다.
'코딩 > 오류 모음집' 카테고리의 다른 글
맥북에서 zsh: command not found: pip 오류 해결하기 (0) | 2023.09.19 |
---|---|
맥에서 github 클론 할 때 remote: support for password authentication was removed on 날짜 오류 발생 해결하기 (0) | 2023.09.10 |
React Hook useEffect has a missing dependency 오류 해결하기 (0) | 2023.08.26 |
react에서 axios 사용 시 404에러 해결 방법 (0) | 2023.08.24 |
리액트로 서버와 통신할 때 network error 해결 방법(feat : CORS에러) (0) | 2023.08.24 |