Spring

250108 Spring 06 - REST, @PathVariable, Talend API Tester, ResponseEntity

suerte10 2025. 1. 8. 16:35

1. 댓글 작성 기능 작성 (2)

1) comment-mapper.xml 파일에 코드 추가

* 마이바티스에는 공통 자바 타입(Integer, Boolean 등)을 위한 내장 타입의 별칭이 있다.

(참고) https://mybatis.org/mybatis-3/ko/configuration.html#typeAliases

 

2) CommetDao.java  파일에 코드 추가

 

3) 단위 테스트

 

 

 

2. REST

1) REST : REpresentational State Transfer

  (1) 하나의 URI는 하나의 고유한 resource를 대표하도록 설계

  (2) 특정 URI는 그에 상응하는 데이터를 의미 -> 데이터에 대한 처리는 http방식(get, post, delete 등)과 같은 추가적인 정보를 통해서 결정

  (3) REST 서비스: 특정 URI를 통해서 사용자가 원하는 정보를 제공하는 방식

  * RESTful, RESTful API

(예시) 앱에서 특정 URI로 요청을 보냄(http 방식) - 서버에서는 요청을 받고 리턴해주는데, JSON 혹은 XML 형식의 문자열을 리턴해줌 - 받은 문자열을 앱에서 화면에 보여줌

xml 보다 json이 작성하는데 들어가는 문자의 개수가 적음. 최근에는 json이 더 많이 쓰임.

 

전통적인 방식

- 쿼리스트링을 이용해서 서버로 정보를 보냄

- URI는 그대로, 쿼리스트링을 변경해서 데이터를 보내는 식

 

REST 방식

- URI 주소 자체가 변수(혹은 파라미터?)의 역할을 하면서 서버로 요청을 보낸다

- URI와 요청방식을 합쳐서 요청을 보내면 화면에 표시할 수 있는 정보(데이터)가 응답으로 돌어옴

 

2) REST와 HTTP methods

(1) GET : 리소스 또는 리소스 컬렉션(리스트)을 얻어옴

(2) POST : 리소스 생성

(3) PUT : 리소스 업데이트

(4) DELETE : 리소스 삭제

 

 

 

3. Chrome 확장 프로그램 설치 - Talend API Tester

 

 

 

4. 댓글 작성 기능 작성 (3)

1) CommentService.java 파일 추가

2) CommentController.java 파일 추가

 

3) 테스트

Talend API Tester에서 테스트를 실행한 결과
Eclipse 콘솔창에 출력되는 에러 메시지

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default

--> 잭슨 데이터바인드가 LocalDateTime을 지원하지 않아서 에러 발생

pom.xml 파일에 의존성 추가 후 서버 재시작
테스트 성공

 

4) CommentItemDto.java 파일 추가

 

5) CommentService.java 수정

 

6) CommentController.java 수정

 

7) 테스트 결과

 

8) CommentController.java 수정

* ResponseEntity : http 응답 코드와 response 바디 안에 들어가는 객체를 컨트롤할 수 있는 Entity