[error] 자바 Required String parameter is not present 에러 원인

2022. 7. 14. 11:00·과거의 이력/JAVA

프론트에서 Restful API 통신작업을 하는 도중 발견한 에러이다.

 

서론

특정 데이터를 삭제하는 기능의 API가 있었다. 해당 API는 delete 메소드로 구현이 되어있었다.

현업에서 특정 상황에서의 요구에 따라 해당 메소드를 Delete에서 Post로 수정하여야 했다.

이 과정에서 발생한 에러이다.

 

예시

Post 메소드 사용을 위해 정상작동하던 API에 매핑 방식을

@DeleteMapping 에서 @PostMapping으로 변경하니 에러가 발생하였다.

 

변경 후 에러가 나는 코드는 다음 상황이다.

@PostMapping("/delete") // 기존 @DeleteMapping

public String testUser (@RequestParam(name = "userId", required = true) String userId)

 

에러 원인

 

테스트를 해보니 @DeleteMapping 이외에 @GetMapping 으로 메소드를 변경했을 경우 매개변수를 잘 받아왔다.

그렇다면 메소드가 Post 일때는 왜 매개변수를 받지 못할까 에 대한 의문이 있었다.

 

일단 결과를 말하자면 Post라고 무조건 @RequestParam를 쓰지 못하는것은 아니다.

에러는 @RequestParam은 기본적으로 url상에서 데이터를 찾기 떄문에 발생하기 때문이다.

 

예를들어 프론트에서 API로 데이터를 던질때 <form> 태그를 이용하여 제출할 경우에는

데이터가 url을 통해 전달되므로, 이 경우에는 Post를 사용해도 @RequestParam로 데이터를 전달받을 수 있다.

 

프론트에서 데이터를 JSON 형태로 주고받을 경우 (나의 경우) 해당 원인으로 인해 에러가 발생하게 된다.

 

 

해결책

1. 수신자쪽 데이터 형식 변경

@RequestParam를 사용하고자 한다면 전송받는 데이터 형식을 JSON 형태로 변경해주면 될것이다.

 

2. 발신자쪽 형식 변경

@RequestBody 로 수신받는 방법이 있다.

@PostMapping("/delete")

public String testUser (@RequestBody HashMap<String, Object> params) {

	String userId = (String) params.get("userId");
    System.out.println("userId : " + userId); // jmoh
}

 

 

 

 

 


 참고링크 : https://ocblog.tistory.com/49

'과거의 이력 > JAVA' 카테고리의 다른 글

[Java] Java 길이 확인하기 (length, length(), size() 차이)  (0) 2022.08.17
[JAVA] HashMap LinkedHashMap 차이점  (0) 2022.08.08
[JAVA] 변수 타입 확인하기  (0) 2022.07.12
[Servlet] HTTP 세션 상태관리  (0) 2022.07.08
Spring Boot에서 Vue 프로젝트를 띄우기 위한 구성  (0) 2022.06.08
'과거의 이력/JAVA' 카테고리의 다른 글
  • [Java] Java 길이 확인하기 (length, length(), size() 차이)
  • [JAVA] HashMap LinkedHashMap 차이점
  • [JAVA] 변수 타입 확인하기
  • [Servlet] HTTP 세션 상태관리
정많이 정만이
정많이 정만이
jeongmany
  • 정많이 정만이
    정많이 정만이
    정많이 정만이
  • 전체
    오늘
    어제
    • 분류 전체보기 (80)
      • 과거의 이력 (71)
        • CS (12)
        • 프론트엔드 (4)
        • javascript (21)
        • Vue.js (7)
        • bootstrap (1)
        • [그리드] ag-grid (3)
        • [그리드] vue-grid-layout (1)
        • HTML_CSS (5)
        • NPM (1)
        • [차트]highcharts (0)
        • JAVA (9)
        • 백엔드 (1)
        • 기본개념 (손필기) (5)
        • 프로그래머스 (1)
      • 알고리즘 (6)
      • 통계 (9)
        • 통계지식 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    공유메모리
    webpack.config.js
    반복문
    ubuntu설치
    우분투
    cs
    Webpack
    ubuntu
    버추얼박스
    vuejs
    bootstrap
    CSS
    객체
    자바스크립트
    알고리즘
    java
    ag-grid
    selectbox
    vue.config.js
    aggrid
    HTML
    VirtualBox
    JavaScript
    vue.js
    js map
    ES6
    개발자
    코딩테스트
    vue
    js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
정많이 정만이
[error] 자바 Required String parameter is not present 에러 원인

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.