-
KOSTA 교육 62일차(Spring, REST, RestController, Reply)Review 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으로 데이터를 주고받는 방법을 배웠다. 여러가지의 방법들이 많았고 왜 해당 어노테이션을 사용하는지 알 수 있게 되었다. 상황에 맞는 사용법을 숙지해서 사용하는 방법을 숙달해야되겠다.
다음 주는 설 연휴가 시작된다. 지금까지 배웠던 내용들과 미리 새로운 기능들을 접하고 파이널 프로젝트와 수료 후 숙지해야할 기술들을 학습하여 개별 프로젝트를 해보려고 한다.
구정에도 쉬지않고 달려!!
'Review' 카테고리의 다른 글
KOSTA 파이널 프로젝트 64 ~ 78일차(업무 협업 툴) (4) 2020.06.24 KOSTA 교육 63일차(Spring, AOP, Transaction, FileUpload) (0) 2020.06.24 KOSTA 교육 61일차(Spring, Oracle DB Hint, Paging, Search) (0) 2020.06.24 KOSTA 교육 60일차(Spring, Test, CRUD, MVC) (0) 2020.06.24 KOSTA 교육 59일차(Spring, JUnit, DB, myBatis, log4jdbc-log4j2, MVC) (0) 2020.06.24