📖 학습 내용
- REST
- @RestController
- @PathVariable
- @RequestBody
- 댓글 처리
1. REST
Representational state transfer의 약자로서 하나의 URI는 하나의 고유한 리소스(Resource)를 대표하도록 설계 되는 개념에 전송방식을 결합한 것
- URI > URL 개념으로 URI는 현실, 구체적이며 URL은 상대적으로 상징적 의미를 지님
- HTTP Method (GET,POST,PUT,PATCH, DELETE 등)으로 나타냄
2. @RestController
문자열 반환
- produces 속성은 해당 메소드가 생산하는 MIME 타입을 의미
- 문자열로 직접 지정 혹은 메소드 내의 MediaType을 이용할 수 있음
- ContextType이 produces 속성값에 의해 나타낸 것을 볼 수 있음
객체 반환
- 객체를 반환하는 작업은 JSON이나 XML을 이용
- @AllArgsConstructor는 모든 속성을 사용하는 생성자를 만드는 어노테이션
- @NoArgsConstructor는 비어 있는 생성자(기본생성자) 를 만드는 어노테이션
- SampleVO 객체를 JSON 형식으로 반환
컬렉션 타입
- 컬렉션 타입으로 객체를 반환
- 1 ~ 10 까지 반복하여 출력
- 기본 출력은 XML 형식, .json을 출력하면 JSON 형식으로 출력
- /sample/getList.json 으로 JSON 형식으로 출력
ResponseEntity
- 데이터와 함께 HTTP 헤더의 상태 메시지도 같이 전달
- if문의 조건에 따라 height 값이 150 이하로 입력 하면 상태코드는 502
3. @PathVariable
REST 방식에서 자주 사용 됨
URL 경로의 일부를 파라미터로 사용할 때 이용
- @PathVariable 어노테이션을 파라미터 안에 넣는다.
- return시 배열을 생성
- 어노테이션 변수명은 GetMapping 에서 {}에 선언한 변수명과 일치 해야 한다.
4. @RequestBody
JSON 데이터를 원하는 타입의 객체로 변환해야 할 때 사용
요청 내용을 이용하여 해당 파라미터 타입으로 변환을 요구
- 요청(request)한 내용을 처리해야 하기 때문에 @PostMapping 선언
- postman 프로그램으로 테스트
- ticket 객체에 값을 넣지 않아 빈객체가 나오지만 에러는 발생하지 않음
5. 댓글 처리
RESTful 방식, Ajax를 이용해 댓글 처리
영속 영역
- sqldeveloper 로 댓글 처리를 위한 tbl_reply 테이블 생성
- 쿼리문 작성을 위한 XML 생성 후 namespace 설정(Mapping)
- JUnit Test를 통해 ReplyMapper 객체가 정상 적으로 Mapping 되었는지 확인
Create Test
- ReplyMapper 인터페이스에 insert 메소드 등록
- Test를 통해 insert문이 제대로 작동 하는지 확인
Read Test
- ReplyMapper 인터페이스에 read 메소드 등록
- XML에 Read하기 위한 select 문 작성
- Test를 통해 select 문이 정상적으로 작동하는지 확인
Update Test
- ReplayMapper 인터페이스에 update 메소드 등록
- Test를 통해 update문이 정상적으로 작동하는지 확인
Delete Test
- ReplyMapper 인터페이스에 delete 메소드 등록
- Test를 통해 delete문이 정상적으로 작동하는지 확인
Service
Service의 로직은 위 방식과 동일하기 때문에 메소드별 설명은 생략
- ReplyService 인터페이스에 각 메소드 등록
- ReplyServiceImpl은 ReplyService를 상속받아 각 메소드를 오버라이딩 한후 mapper 메소드를 return
Controller - insert
- @RequestMapping을 사용해 /replies/로 상위 경로 설정
- REST 방식으로 구현 하기 위해 @RestController 어노테이션 선언
- insert시 consumes 와 produces를 이용하여 JSON 방식의 데이터만 처리 및 문자열만 반환
- postman 프로그램을 활용해 post 요청 후 정상적으로 작동 되는 것을 DB에서 확인
Controller - read
- @PathVariable을 사용해 bno, page를 URL로 표시
- Criteria 객체를 생성하여 페이지 번호를 @PathVariable에서 입력
- rno를 @PathVariable로 입력하여 댓글 조회
Controller - update
-
수정할 값을 받기 때문에 request 객체를 이용하여 작성
-
Method는 PUT과 PATCH를 이용하여 수정
PUT : 해당 자원의 전체를 변경
PATCH : 일부를 변경
-
RequestBody를 이용하여 들어온 요청에 대하여 JSON 방식으로 받음
-
VO에 rno를 담고 수정 되면 success, 실패시 error
- PATCH 방식으로 요청 하면 값이 수정된 것을 확인 할 수 있다.
Controller - delete
- @DeleteMapping 으로 선언하여 DELETE 방식으로 요청오면 해당 rno는 삭제 되고 성공 하면 success 실패시 error를 리턴 한다.