Review

KOSTA 교육 62일차(Spring, REST, RestController, Reply)

Tigger 2020. 6. 24. 01:12

19. 2. 1(금)

 

배운 내용

 

  1. REST란?
  2. @RestController
  3. @RestController 파라미터
  4. 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으로 데이터를 주고받는 방법을 배웠다. 여러가지의 방법들이 많았고 왜 해당 어노테이션을 사용하는지 알 수 있게 되었다. 상황에 맞는 사용법을 숙지해서 사용하는 방법을 숙달해야되겠다.

 

다음 주는 설 연휴가 시작된다. 지금까지 배웠던 내용들과 미리 새로운 기능들을 접하고 파이널 프로젝트와 수료 후 숙지해야할 기술들을 학습하여 개별 프로젝트를 해보려고 한다.

구정에도 쉬지않고 달려!!