Rest API
Representational State Transfer의 약어로 하나의 URI는 하나의 고유한 리소스를 대표하여 설계된다는 개념의 전송방식으로 서버에서 화면으로 전송하는 순수한 데이터 처리방식입니다.
URI + GET/POST/PUT/DELETE
스프링의 REST 관련 @Annotation
- @RestController : Controller가 REST 방식을 처리하기 위한 것을 명시
- @ResponseBody : 일반적인 view(jsp,asp)로 전달되는 것이 아니라 데이터 자체를 전달하는 용도
- @PathVariable : URL 경로에 있는 값을 파라미터로 사용할 때 사용
- @CrossOrigin : Ajax의 크로스 도메인 문제를 해결
- @RequestBody : JSON 데이터를 원하는 타입으로 Binding
- @ResponseEntity : 데이터와 함께 HTTP header의 상태메세지를 함께 전달
@RestController
는 기존의 @Controller
와 @ResponseBody
를 조합한 동일한 결과이며 이는 리턴 타입으로 사용자가 정의한 클래스 타입을 사용 할 수 있으며 동시에 JSON과 XML로 자동 데이터 처리를 할 수 있는 것을 의미합니다.
JSON 데이터 처리
-
JSON?
-
JavaScript Object Notation
- 구조가 있는 데이터를 { } 로 묶어
key
와value
로 구성하는 data format
- 구조가 있는 데이터를 { } 로 묶어
-
-
add pom.xml → jackson-databind 라이브러리
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.8</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.9.8</version> </dependency>
-
add pom.xml → Gson 라이브러리
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.2</version> </dependency>
-
그외 Servlet 버전 수정 및 Lombok 관련 설정, Test를 위한 Pom.xml 수정
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
'TIL' 카테고리의 다른 글
20190517_모듈패턴 및 JSON 기초 (0) | 2019.05.18 |
---|---|
201910516_예제로 배우는 스프링 입문 2 (0) | 2019.05.17 |
20190515_예제로 배우는 스프링 입문 (0) | 2019.05.15 |
20190410 [mac] 깃허브(Github) remote:Permission to 에러 (183) | 2019.04.10 |