에러해결 & 최적화/Spring

[해결] QueryString이 @RequestParam으로 인식이 안되는 경우

Chung-A 2021. 9. 12. 02:09

작업을 하다 Post 로 전송한 QueryString 이 인식이 안되는 상황이 발생하였다.

 

문제 상황은 /member?phone=12345 이렇게 보내고 

Spring 에서 받을 때 아래와 같이 작업한 상황이였다.

 

    @PostMapping("/member")
    public String registerMember(@RequestParam String phone) {
        // 작업...
        return "/admin";
    }

 

그런데 여기서 RequestParam에 데이터를 인식을 못하고 있어서 한참동안 삽질한 결과

Get이 아닌 방식으로 RequestParam을 보낼 때는 Get 처럼 url 뒤에 QueryString 을 붙이는 것이 아니라

Body에 QueryString을 넣고 ContentType을 application/x-www-form-urlencoded 로 변경해야 한다.

 

 

 

javascript 로 ajax 요청을 보낸다면 다음과 같이 보낼 수 있을것이다.

 

              $.ajax({
                    url: "/member,
                    data: "phone="+phone,
                    contentType: "application/x-www-form-urlencoded",
                    type: "POST",
                    error:function(request,status,error){

                    }
                }).done(function (data)){
                //...
                });

 

HTML Form을 사용하여 POST로 데이터를 전송할 때도 Body 에 QueryString 이 들어가는 방식으로 위와같이 전송하지 않을까 싶다.

 

GET 이 아닌 상황에서 QueryString 이 어떻게 동작하는지 애매하게 알고만 있다보니 생긴 결과였다.

또, application/x-www-form-urlencoded 가 언제 쓰이는 지 좀 더 공부해봐야겠다.