$(document).ready(function() {
let person = {name:"abc", age:10};
let person2 = {};
$("#sendBtn").click(function() {
$.ajax({
type:'POST',
url: '/ch4/send',
headers : {"content-type": "application/json"},
dataType: JSON.stringify(person),
success : function(result) { person2 = JSON.parse(result);
alert(result); },
error : function() { alert(error) }
});
alert("the request is sent")
});
});
JS객체를 JSON.stringify()로 문자열로 바꾸고, 서버로 전송한다. 서버는 jackson-databind로 문자열을 자바 객체로 바꿔서 맵핑된 컨트롤러의 메서드가 받는다. 메서드에서 작업 후 자바객체를 반환한다.
다시 jackson-databind가 자바객체를 JSON문자열로 바꿔서 전송한다. 클라이언트가 받아서 JSON.parse()로 JS객체로 변환한다.
즉 클라이언트와 서버가 서로 전송 하려면 문자열로 전송해야 한고, 궁극적으로 JS객체를 JAVA객체로 바꾸고, 또 반대로 바꿔서 작업한다.
@ResponseBody를 해당 메서드에, @RequestBody를 해당 메서드의 매개변수에 붙여야 한다.
메서드에 @ResponseBody 대신, 클래스에 @RestController 사용 가능. 그러면 클래스에 포함된 모든 메서드에 @ResponseBody가 붙은 효과.
API를 디자인하는 방식.
프로토콜에 독립적이고, 주로 HTTP를 사용해서 구현.
리소스 중심의 API디자인 - HTTP메서드로 수행할 작업을 정의
/customers - POST:새 고객 만들기, GET:모든 고객 검색, PUT:고객 대량 업데이트, DELETE:모든 고객 제거
/customers/1 - POST:Error, GET:고객 1에 대한 세무정보 검색, PUT:고객 1인 있는 경우 고객 1의 세부 정보 업데이트, DELETE:고객 1 제거
/customers/1/orders - POST:고개1에 대한 새 주문 만들기, GET:고객 1에 대한 모든 주문 검색, PUT:고객 1의 주문 대량 업데이트, DELETE:고객 1의 모든 주문 제거
//원래 하던 방법
읽기 - /comment/read?cno=번호 - GET, 지정된 번호의 댓글을 보여준다.
쓰기 - /commnet/write - 지정한 게시물을 저장한다.
삭제 - /comment/remove - 댓글을 삭제한다.
수정 - /comment/modify - 수정된 게시물을 저장한다.
//REST API적용 - URI를 명사 위주로 변경
읽기 - /comments - GET, 모든 댓글을 보여준다.
읽기 - /comments/{cno} - GET, 지정된 번호의 댓글을 보여준다.
쓰기 - /comments - POST - 새로운 댓글을 저장한다.
삭제 - /comments/{cno} - DELETE - 지정된 번호의 댓글을 삭제한다.
수정 - /comments/{cno} - PUT/PATCH - 수정된 댓글을 저장한다.