ABOUT ME

-

오늘
-
어제
-
-
  • KOSTA 교육 62일차(Spring, REST, RestController, Reply)
    Review 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으로 데이터를 주고받는 방법을 배웠다. 여러가지의 방법들이 많았고 왜 해당 어노테이션을 사용하는지 알 수 있게 되었다. 상황에 맞는 사용법을 숙지해서 사용하는 방법을 숙달해야되겠다.

     

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

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

    댓글