Review
KOSTA 교육 62일차(Spring, REST, RestController, Reply)
Tigger
2020. 6. 24. 01:12
19. 2. 1(금)
배운 내용
- REST란?
- @RestController
- @RestController 파라미터
- Reply(댓글 처리)
1. REST 란?
Representational state transfer의 약자로서 하나의 URI는 하나의 고유한 리소스(Resource)를 대표하도록 설계되는 개념에 전송방식을 결합한 것이다.
- URI > URL 개념으로 URI는 현실, 구제척이며 URL은 상대적으로 상징적인 의미를 가지고 있다.
- HTTP Method(GET, POST, PUT, PATCH, DELETE 등)으로 나타낸다.
2. @RestController
JSP와 다르게 순수한 데이터를 반환하는 형태이며 다양한 데이터를 전송할 수 있는 어노테이션이다.
문자열 반환
- produces 속성은 해당 메소드가 생산하는 MIME 타입을 의미한다.
- 문자열로 직접 지정 혹은 메소드 내의 MEdiaType을 이용할 수 있다.
- ContextType이 produces 속성값에 의해 나타낸 것을 볼 수 있다.
객체의 반환
- 객체를 반환하는 작업은 JSON이나 XML을 이용한다.
- AllArgsContstructor는 모든 속성을 사용하는 생성자를 만드는 어노테이션이다.
- NoArgsContstructor 비어 있는 생성자를 만드는 어노테이션이다.
- SampleVO 객체를 return 한다.
- XML과 JSON으로 결과 값이 나타난다.
컬렉션 타입
- 컬렉션 타입으로 객체를 반환한다.
- 1부터 10까지 반복하여 출력한다.
- 기본 출력은 XML, .json을 출력하면 json형식으로 출력한다.
- XML, JSON 형식이 출력되었다.
- Map으로 Key, Value값을 가진 메소드를 선언한다.
- XML, JSON 형식이 출력되었다.
ResponseEntity 타입
- 데이터와 함께 HTTP 헤더의 상태 메시지도 같이 전달한다.
- 주소창에 param으로 준 값을 주소창에 입력한다.
- if문의 조건에 따라 값이 달라진다.
3. @RestController의 파라미터
@PathVariable
- REST방식에서 자주 사용한다.
- URL경로의 일부를 파라미터로 사용할 때 이용한다.
- 어노테이션을 파라미터 안에 넣어준다.
- return시 배열을 생성하여 보낸다.
- 어노테이션 변수명은 GetMapping에서 선언한 명과 같아야 한다.
- URL에 작성한 내용이 XML에 표현되었다.
@RequestBody
- JSON데이터를 원하는 타입의 객체로 변환해야 할 때 사용
- 요청 내용을 이용하여 해당 파라미터 타입으로 변환을 요구한다.
- Post인 이유는 요청(request)한 내용을 처리해야 하기 때문이다.
- 어노테이션을 선언하고 객체를 선언한다.
- 일반적인 TEST 방법이 아닌 크롬의 확장 프로그램을 이용하여 테스트 해보았다.
- 위와 같이 에러 없이 잘 전송되었다.
4. Reply(댓글 처리)
REST 방식을 사용하여 Ajax를 이용해 댓글을 호출한다.
영속 영역
- 쿼리문을 작성하여 테이블을 생성한다.
- 도메인 객체를 생성한다.
- Mapper 클래스를 생성한다.
- xml을 생성해서 Mapping한다.
- test를 통해서 ReplyMapper 객체가 정상구동 하는지 꼭 확인한다.(습관!)
- 구동 확인이 완료되었다.
Create test
- insert 메소드를 선언한다.
- insert에 대한 쿼리문이다.
- 입력했던 댓글들이 출력된다.
Read test
- read 메소드를 선언한다.
- read에 대한 쿼리문이다.
- 5번 댓글이 조회 되는지 확인한다.
- 5번 댓글이 나온 것을 확인할 수 있다.
Delete test
- delete 메소드를 선언한다.
- delete에 대한 쿼리문을 작성한다.
- 1번 댓글을 삭제되는지 확인한다.
- 삭제된 결과를 확인한다.
Update test
- update 메소드를 생성한다.
- update 쿼리문을 작성한다.
- 10번 댓글을 vo에 담고 set을 이용해서 담는다.
- count 변수에 update된 vo를 담고 출력한다.
- 수정된 값을 출력한다.
@Param
- Param을 이용하여 MyBatis 두 개 이상의 데이터를 넘기기 위해서 사용한다.
- Param의 속성 값은 #{}의 이름으로 사용가능하다.
- Param 어노테이션을 사용하여 cri와 bno 두개의 데이터를 파라미터로 보낸다.
- 페이징 처리할 쿼리문을 작성한다.
- 댓글 List를 Mapping한 변수에 담는다.
- forEach문을 사용하여 출력한다.
- bno에 달린 댓글들이 출력되었다.
Service
- Service의 로직들은 기존에 했던 방식과 동일하기 때문에 각 메소드별 설명은 생략한다.
- 각 기능별 메소드를 선언한다.
- 각 메소드별 Mapping한 mapper메소드를 return해준다.
Controller
- RestController 어노테이션을 사용한다.
- AllArgsConstructor를 이용하여 ReplyService 타입의 객체를 필요로한 생성자를 만들어서 사용한다.
Insert
- insert시 consumes와 produces를 이용하여 JSON 방식의 데이터만 처리한다. 문자열만 반환한다.
- JSON 타입에 맞춰서 작성한 결과 값이 출력된다.
Read
- PathVariable를 사용하여 bno, page를 URL로 표시한다.
- Criteria 객체를 생성하여 페이지 번호를 PathVariable에서 입력한다.
- URL에 입력한 값이 출력된다.
- rno를 PathVariable로 입력하여 댓글을 조회한다.
- 댓글 번호에 따른 결과 값을 출력한다.
Delete
- rno를 PathVariable로 입력하여 댓글을 조회한다.
- remove시 1이면 success를 return하고 아니라면 error를 return 한다.
- 삭제시 success가 출력된다.
Update
- 수정 값을 받기 때문에 request 객체를 이용하여 작성한다.
- method는 PUT과 PATCH를 이용하여 수정한다.
PUT : 해당 자원의 전체를 변경한다.
PATCH : 일부를 변경한다. - RequestBody를 이용하여 들어온 요청에 대하여 JSON방식으로 받아온다.
- vo에 rno를 담고 수정되면 success, 실패시 error가 뜨게 한다.
- 수정 값을 입력하고(request) 3번 댓글을 수정한 결과 값(Response)이 출력됐다.
오늘 교육 간 느낀점
REST의 개념과 JSON으로 데이터를 주고받는 방법을 배웠다. 여러가지의 방법들이 많았고 왜 해당 어노테이션을 사용하는지 알 수 있게 되었다. 상황에 맞는 사용법을 숙지해서 사용하는 방법을 숙달해야되겠다.
다음 주는 설 연휴가 시작된다. 지금까지 배웠던 내용들과 미리 새로운 기능들을 접하고 파이널 프로젝트와 수료 후 숙지해야할 기술들을 학습하여 개별 프로젝트를 해보려고 한다.
구정에도 쉬지않고 달려!!