[Spring] Restful API

업데이트:

Rest API

URI + GET/POST/PUT/DELETE
HTTP URI를 통해 리소스를 명시하고, HTTP 메소드(GET/POST/PUT/DELETE)를 통해 해당 리소스를 제어하는 명령을 정의한다.

  • 리소스는 JSON,XML과 같은 여러 가지 언어로 표현할 수 있다.

기존 Service vs REST Service

  • 기존 Service: 요청에 대한 처리 후 가공된 데이터를 이용해 보여줄 View를 만들어 반환
  • REST Service: 데이터만 처리하거나 JSON 또는 XMLM형식으로 반환 => View를 만들지 않아도 됨

REST 관련 Annotation

  • RestController: Controller가 REST 방식을 처리하기 위한 것임을 명시
    @RestController
    @RequestMapping("/user")
    @CrossOrigin(origins = "*")
    @Controller
    public class UserController {
    ...
    }
    
  • ResponseBody: 뷰가 아닌 데이터 자체를 전달함
    @GetMapping("/rest2")
    public @ResponseBody List<String> test2() {
      List<String> list = Arrays.asList("Hello", "Java", "World");
      return list;
    }
    
  • PathVariable: URL경로에 있는 값을 파라미터로 추출
    @GetMapping("/rest/{id}/{no}")
    public @ResponseBody String test(@PathVariable String id, @PathVariable int no) {
      return "Hello Rest " + id + ", " + no;
    }
    
  • CrosssOrigin: Ajax의 크로스 도메인 문제를 해결
    @CrossOrigin(origins = "*")  
    
  • ReqeuestBody: JSON데이터를 원하는 타입으로 바인딩
    public String selectUserName(@RequestBody UserDto user) {
          if(uservice.selectUserName(user.getUserName()) == null) return "success";
          else return "fail";
      }
    

메소드 종류

restapi
CRUD와 연관지어서 분류할 수 있다.

작업 method 방식  
Create(Insert) POST /board/write 글쓰기
READ(Select) GET /board/read/22 글읽기
UPDATE POST /board/update 글수정
DELETE GET /board/delete/22 글삭제

REST API 설정

  • Jackson-databind Library

    Java Object를 JSON으로 변환하거나 JSON을 Java Object로 변환하는데 사용할 수 있는 Java 라이브러리

 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.3</version>
        </dependency>

[참고] Spring에서 JSON으로 리턴하는 방법

카테고리:

업데이트: