
- POSTMAN에서는 요청이 정상작동하지만, 프론트와 연동시 415에러가 발생한다.

POSTMAN을 활용하여 데이터가 넘어가는것을 확인한상황
실행되는 POSTMAN


const formData = new FormData();
e.preventDefault();
const data = {
userSeq,
categorySeq: parseInt(categorySeq),
nickname,
introduction: introduction.value,
};
formData.append("file", imgFile);
//formData.append("request", JSON.stringify(data));
formData.append("request", new Blob([data]), { type: "application/json" });
axios
.post("http://localhost:8082/character", formData, {
headers: {
//"Content-Type": false,
//"Content-Type": "multipart/form-data",
},
})
file 을 함께 보내야한다면 FormData 에 담아서 보낸다고 한다
선언
const formData = new FormData();
데이터 삽입(파일)
formData.append("file", imgFile);
데이터 삽입(DTO)은 찾은거론 두가지가 있는데 다음과 같음
formData.append("request", new Blob([data]), { type: "application/json" });formData.append("request", JSON.stringify(data));첫번째는 데이터를 binary 로 변환하여 전송되며, 전송되는 데이터는 다음과 같음


HttpMediaTypeNotSupportedException 이 발생하며, 로그는 다음과 같음
application/octet-stream 은 8비트 바이너리 데이터를 의미하고, 딱히 파싱될것같은게 없을때 기본값으로 사용한다고 한다. 근데 그런 기본값도 안된다. ?.?
아 그리고 파일 하나만 보내게된다면 받아지는데 , DTO는 하나만 보내도 안받아지고있는 상태
consumes = {"multipart/form-data"} 추가 및 axios 의 헤더에 multipart/form-data 추가@RequestPart 로 파일, DTO를 나누지 않고 하나의 DTO로 묶어 Spring에서@ModelAttribute 하나로 받기param 으로 보내고 Spring 에서 @RequestParam 으로 받기binary 로 변환하여 보내기, JSON 으로 보내기Jackson Databind MAVEN 추가여기가 제일 비슷한것 같은데 안된다
https://medium.com/jaehoon-techblog/simpleblog-개발-일지-4-55a8d2a8604
@RequestPart 어노테이션을 사용하여 file과 DTO를 나눠주어야 한다@RequestPart(value="file", required = false) MultipartFile[] file,
@RequestPart(value="request") SendCharacterCreateRequest request
file 은 새로 custom axios 를 만들어놓은 상태Send 와 똑같이 사용하면 된다request로 보낼 FormData를 선언해준다
DTO 도 보내야 한다면 JSON 파일도 선언해준다
FormData.append(key, value) 형식으로 FormData 에 데이터를 담아준다
DTO 처럼JSON 데이터같은 경우는 binary file 로 변환해야 하기 때문에 new Blob 로 선언해야 한다.
binary file 로 변환하며 타입을 내부에 명시해줘야한다.

axios 를 전송하듯 보내면 된다const formData = new FormData(); // 1번
const request = { // 2번
userSeq,
nickname: nickname.value,
};
formData.append("file", imgFile); // 3번
formData.append("request", new Blob([JSON.stringify(request)], { type: "application/json" }));
File.post("/character", formData) // 4번
.then((res) => {
if (res.status == 200) alert("캐릭터 생성이 완료되었습니다.");
else alert("캐릭터 생성에 실패했습니다.");
})
덕분에 잘 해결 했습니다!