Api Parameter 를 전달 받는 상황에서 생긴 문제에 대해 기록.
Post Method 로 Parameter 를 받을 때는 여러가지 방법이 있다.
회사에서 주로 사용하는 방법은 하나씩 @ApiParam 으로 매핑하는 방식이었다.
@ApiParam( name = "content", type = "String", required = true)
@RequestParam("content") String content
export function wordQuestionInsert(param) {
return request({
url : '/word-questions'
, method : 'post'
, params : {
wID : param.wID
, lID : param.lID
, answer : param.answer || ''
, content : param.content || ''
}
})
}
따자를 진행하며 팀원과 맞춘 컨벤션은 @ApiParam 이 아닌
@ResponseBody 를 이용해서 DTO 구조로 Parameter 를 전달 받기로 했다.
400 에러 땡 ❌
ResponseBody를 사용해서 전달받으니까 400 에러가 발생.
400 Bad Request 오류는 HTTP 상태 코드로 웹 사이트 서버에 보낸 요청 (종종 웹 페이지로드 요청과 같은 간단한 요청)이 어떻게 든 잘못되었거나 손상되어 서버가이를 이해하지 못했음을 의미합니다.
ResponseBody 는 json 형태로 전달 받는게 아닌가 싶어서
아래처럼 JSON.stringify 로 변경을 해보더니
아까는 view 에서 400 에러를 부르면서 API 에는 접근도 못하더니 이번에는 API 에 접근은 했다.
export function wordQuestionInsert(param) {
var parameter = JSON.stringify(
{
'wID' : param.wID
, 'lID' : param.lID
, 'answer' : param.answer
, 'content' : param.content
});
return request({
url : '/word-questions'
, method : 'post'
, contentType : 'application/json;charset=UTF-8'
, dataType : 'json'
, params : parameter
})
}
PARAMETER 도 잘 넘어가는 것을 확인했는데 잘 넘어가지 않았다 (/▽\)
Data Type 을 form 으로 바꿔서 시도 땡 ❌
export function wordQuestionInsert(param) {
const frm = new FormData()
frm.append('wID', param.wID)
frm.append('lID', param.lID)
frm.append('answer', param.answer)
frm.append('content', param.content)
return request({
url : '/word-questions'
, method : 'post'
, headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
, params : frm
})
}
🔰 해결 🔰
내가 예상했던 방법은 view 에서 설정을 잘못해주었다고 생각했었다.
그게 아니라 @ResponseBody 를 파라메터 앞에 쓰니까 Location 에러가 나는 것을 보고 나는 @ResponseBody 의 자리를 ... 새삼 깨달았다. ㅎ Code 마다 @ResponseBody 의 위치가 다르던데 조금 더 찾아봐야 겠다.
'개발중 > troubleshooting' 카테고리의 다른 글
Request method 'DELETE' not supported (0) | 2021.10.25 |
---|---|
'Postman could not send request' 에러 해결 (0) | 2021.10.25 |
Request header is too large 에러 해결 (0) | 2021.09.06 |
mybatis 에러 해결 : java.lang.IndexOutOfBoundsException (3) | 2021.08.04 |
Check the 'Function Name Parsing and Resolution' 에러 해결 (2) | 2021.06.17 |