[KOSTA] Spring 기반 Cloud 서비스 개발자 양성 과정 76 일차 - Spring, RESTful

JUNBEOM PARK·2022년 5월 24일
0
post-thumbnail

📖 학습 내용

  1. REST
  2. @RestController
  3. @PathVariable
  4. @RequestBody
  5. 댓글 처리

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 로 기본 출력

  • /sample/getList.json 으로 JSON 형식으로 출력

ResponseEntity

  • 데이터와 함께 HTTP 헤더의 상태 메시지도 같이 전달

  • 주소창에 param으로 준 값을 입력

  • if문의 조건에 따라 height 값이 150 이하로 입력 하면 상태코드는 502

3. @PathVariable

REST 방식에서 자주 사용 됨
URL 경로의 일부를 파라미터로 사용할 때 이용

  • @PathVariable 어노테이션을 파라미터 안에 넣는다.
  • return시 배열을 생성
  • 어노테이션 변수명은 GetMapping 에서 {}에 선언한 변수명과 일치 해야 한다.

  • URL에 cat, pid 값을 작성

4. @RequestBody

JSON 데이터를 원하는 타입의 객체로 변환해야 할 때 사용
요청 내용을 이용하여 해당 파라미터 타입으로 변환을 요구

  • 요청(request)한 내용을 처리해야 하기 때문에 @PostMapping 선언

  • postman 프로그램으로 테스트
  • ticket 객체에 값을 넣지 않아 빈객체가 나오지만 에러는 발생하지 않음

5. 댓글 처리

RESTful 방식, Ajax를 이용해 댓글 처리

영속 영역

  • sqldeveloper 로 댓글 처리를 위한 tbl_reply 테이블 생성

  • 도메인 객체(ReplyVO) 생성

  • Mapper 인터페이스 생성

  • 쿼리문 작성을 위한 XML 생성 후 namespace 설정(Mapping)

  • JUnit Test를 통해 ReplyMapper 객체가 정상 적으로 Mapping 되었는지 확인

Create Test

  • ReplyMapper 인터페이스에 insert 메소드 등록

  • XML에 insert 쿼리문 작성


  • Test를 통해 insert문이 제대로 작동 하는지 확인

Read Test

  • ReplyMapper 인터페이스에 read 메소드 등록

  • XML에 Read하기 위한 select 문 작성


  • Test를 통해 select 문이 정상적으로 작동하는지 확인

Update Test

  • ReplayMapper 인터페이스에 update 메소드 등록

  • update를 위한 쿼리문 작성

  • Test를 통해 update문이 정상적으로 작동하는지 확인

Delete Test

  • ReplyMapper 인터페이스에 delete 메소드 등록

  • 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에서 입력

  • URL에 입력한 값이 출력

  • rno를 @PathVariable로 입력하여 댓글 조회

  • 댓글 번호에 따른 조회 결과

Controller - update

  • 수정할 값을 받기 때문에 request 객체를 이용하여 작성

  • Method는 PUT과 PATCH를 이용하여 수정
    PUT : 해당 자원의 전체를 변경
    PATCH : 일부를 변경

  • RequestBody를 이용하여 들어온 요청에 대하여 JSON 방식으로 받음

  • VO에 rno를 담고 수정 되면 success, 실패시 error


  • PATCH 방식으로 요청 하면 값이 수정된 것을 확인 할 수 있다.

Controller - delete

  • @DeleteMapping 으로 선언하여 DELETE 방식으로 요청오면 해당 rno는 삭제 되고 성공 하면 success 실패시 error를 리턴 한다.
profile
DB 엔지니어👍

0개의 댓글