본문 바로가기

TIL

20190512_RestAPI 기초 개념 설정

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

      • 구조가 있는 데이터를 { } 로 묶어 keyvalue로 구성하는 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>