✅ Content-Type
속성
쉽게 말해서 클라이언트(브라우저,앱)와 서버가 데이터를 주고 받을 때
서로 어떤 형식의 데이터를 주고 받는지 알 수 있음
많은 종류가 있지만 주로 많이 사용하는 것은
application/json
: JSON 데이터
application/x-www-form-urlencoded
: 폼 데이터 (key=value&key2=value2)
text/html; charset=UTF-8
: html 응답
✅ application/x-www-form-urlencoded
데이터 보내는 경우
key:value
형태로 보내면 된다@RequestParam
@HttpServletRequest.getParameter()
@ModelAttribute
에서만 받을 수 있다$.ajax({
url: "...",
type: "POST",
data: { saveTable: "1" },
});
@PostMapping("/test")
public String test(@RequestParam String saveTable) {
...
}
@PostMapping("/test")
public String test(HttpServletRequest request) {
request.getParameter("saveTable");
}
✅ application/json
데이터 보내는 경우
JSON 형식(문자열)
로 보내야 한다data: JSON.stringify(객체)
왜 JSON.stringify
가 필요한가?
그 이유는 자바스크립의 객체 {"key":"value"} 를 그대로 보내면 서버에서
JSON
이 아니라 일반 폼 데이터
로 인식할 수도 있기 때문에
JSON.stringify(객체)
를 사용해서 자바스크립트 객체를 JSON 문자열
로 변환한다
그 후 서버는 이 문자열을 JSON으로 파싱해서 사용
참고로 JSON.stringify
로 보냈을 때는 서버에서는 무조건 @RequestBody
로 받아야함
@RequestBody
는 JSON을 자바 객체로 역직렬화
하기 위한 어노테이션
$.ajax({
url: "/api/test",
method: "POST",
contentType: "application/json",
data: JSON.stringify({ name: "홍길동", age: 25 }) // 반드시 stringify!
});
const wrapped = { // {}안에 키 값 형태로 감싸야함
saveTable: "1",
list: regtObj // ← 배열 형태
};
$.ajax({
url: "/cas/cp/irm/hist/tpnu/saveInputList.do",
type: "POST",
contentType: "application/json",
data: JSON.stringify(wrapped)
});
@PostMapping("/...")
public void method(@RequestBody Map<String, Object> data) {
// ...
}