[@ResponseBody] POST method Param 을 DTO 로 받기 ?

2021. 10. 4. 16:42·개발중/Troubleshooting
728x90
반응형

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 의 위치가 다르던데 조금 더 찾아봐야 겠다. 

 

 


 

728x90
반응형
저작자표시 (새창열림)

'개발중 > 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
'개발중/Troubleshooting' 카테고리의 다른 글
  • Request method 'DELETE' not supported
  • 'Postman could not send request' 에러 해결
  • Request header is too large 에러 해결
  • mybatis 에러 해결 : java.lang.IndexOutOfBoundsException
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (939)
      • 개발중 (635)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (88)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (18)
        • 기록 (3)
        • 캐글 스터디 (3)
        • R (12)
      • 논문 (5)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네트워크 관리사 자격증
    리눅스 마스터 1급 요약
    쿠버네티스 스터디
    네트워크 관리사 요약
    jpa
    네트워크 관리사
    네트워크 관리사 학점
    쿠버네티스
    알고리즘
    리눅스 1급 요약
    스프링
    Spring
    VUE
    리눅스 마스터 1급
    docker
    springboot
    파이썬
    BackendDevelopment
    네트워크 관리사 2급 실기
    리눅스 마스터
    네트워크 관리사 2급
    git
    Git 저장소
    파이썬 알고리즘
    REST API
    redis
    리눅스 마스터 요약
    네트워크 관리사 실기
    java
    리눅스 마스터 1급 정리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
[@ResponseBody] POST method Param 을 DTO 로 받기 ?
상단으로

티스토리툴바