Client
// http-common.js
import axios from 'axios'
export default axios.create({
baseURL: 'http://127.0.0.1:8080/',
headers: {
'Content-type': 'application/json',
},
})
import http from '@/util/http-common'
const initProfile = (data, callback, errorCallback) => {
http
.put('/member/' + data.uid, data.formData, {
Headers: {
'Content-Type': 'multipart/form-data',
},
})
.then(res => callback(res))
.catch(err => errorCallback(err))
}
Server
@PutMapping("/{id}")
public ResponseEntity<Map<String, Object>> updateUser
(@PathVariable String id, @RequestBody MemberDto memberDto) throws IOException {
}
Client에서 multipart/form-data 형식으로 보낸 request를 Spring Server에서 받는 중 오류가 발생하였다.
2021-09-28 14:41:47.757 WARN 14900 --- [nio-8080-exec-4] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=----WebKitFormBoundarywBOHpW3qcFIWfKBO;charset=UTF-8' not supported]
해결
stackoverflow를 찾아보니 @RequestBody는 Json 형태의 HTTP Body 내용을 Java Object로 변환해주는 역할을 한다.
Request는 multipart/form-data 형식으로 보냈는데 Json 형식으로 받으려고 하니 발생한 문제였다.
@RequestBody 대신에 @ModelAttribute를 쓰는 것을 권장하고 있다.
같이 보면 좋을 글
https://mangkyu.tistory.com/72
'Backend > Spring' 카테고리의 다른 글
spring boot 시간 설정 (0) | 2021.11.11 |
---|---|
Build Error : no main manifest attribute, in *.jar (0) | 2021.11.10 |
API KEY 값 저장하기 (0) | 2021.10.01 |
Spring Data JPA 사용법 (0) | 2021.07.18 |
Spring Data JPA 기본 (0) | 2021.07.18 |