작업을 하다 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 가 언제 쓰이는 지 좀 더 공부해봐야겠다.
'에러해결 & 최적화 > Spring' 카테고리의 다른 글
[해결]JPA 사용 시 DB 에 들어가는 시간과 실제 시간이 안맞는 경우 (0) | 2021.11.06 |
---|---|
[해결]접근가능한 url 권한 설정이 안되는 문제(SpringSecurity) (0) | 2021.11.02 |