에러해결 & 최적화/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 가 언제 쓰이는 지 좀 더 공부해봐야겠다.