REST란?

Representational State Transfer

  • 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것
  • 하나의 URI는 하나의 고유한 리소스(resource)를 대표하도록 설계된다는 개념
  • 스마트폰, PC, 태블릿 등 디바이스의 종류에 상관 없이 공통으로 데이터를 처리할 수 있도록 하는 방식

즉, REST란

  1. HTTP URI를 통해 자원(Resource)을 명시하고,
  2. HTTP Method(GET, POST, PUT, DELETE, PATCH 등)를 통해
  3. 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다.
    • Create: 데이터 생성 (POST)
    • Read: 데이터 조회 (GET)
    • Update: 데이터 수정 (PUT)
    • Delete: 데이터 삭제 (DELETE)

기존 방식

 

지금까지는 게시판을 구현하면서 컨트롤러에서 서비스를 호출하고, 사용자가 필요로 하는 데이터를 화면(View)으로 전달한 후 HTML을 리턴하는 형태로 진행해 왔다. REST API는 사용자가 요청을 했을 때 HTML을 리턴하지 않고, 자바스크립트를 이용해서 사용자가 필요로 하는 결과(데이터)만을 리턴해주는 방식이다.

 


GET Method

  • GET은 보통 데이터를 조회(Read)할 때 사용한다.
  • DB에서 SELECT에 해당

예시) 회원의 정보를 조회하는 로직을 처리한다.

1. GET http://localhost:9090/rest/api/v1/users/100  ==> 100번 회원의 정보를 조회하는 로직 처리
2. GET http://localhost:9090/rest/api/v1/users  ==> 모든 회원의 목록을 조회하는 로직 처리

 


POST Method

  • POST는 보통 데이터를 추가(Create)할 때 사용한다.
  • DB에서 INSERT에 해당

예시) 회원가입을 할 때, POST 방식으로 사용자의 정보를 함께 전송한다.

POST http://localhost:9090/rest/api/v1/user
{
    "username" : "홍길동",
    "password" : "1234",
    "email" : "hong@google.com",
    ...
}

 


PUT Method

  • PUT은 보통 데이터를 수정(Update)할 때 사용한다.
  • DB에서 UPDATE에 해당

예시) 사용자의 정보를 수정하고 싶은 경우, 수정하고 싶은 사용자 정보와 함께 PUT 방식으로 요청한다.

PUT http://localhost:9090/rest/api/v1/user/{user_id}

예시) PUT http://localhost:9090/rest/api/v1/user/1
{
    "password" : "4321"
}

POST와 동일한 url로 요청하지만 HTTP 메서드가 다르기 때문에 다르게 동작한다.

 


DELETE Method

  • DELETE는 데이터를 삭제(Delete)할 때 사용한다.
  • DB에서 DELETE에 해당

예시) 사용자의 정보를 지우고 싶은 경우(탈퇴 처리), DELETE 방식으로 사용자의 ID값과 함께 요청한다.

DELETE http://localhost:9090/rest/api/v1/user/{user_id}

예시) DELETE http://localhost:9090/rest/api/v1/user/1 ==> 1번 회원 정보를 삭제 처리

 


@RestController

  • @Controller@ResponseBody가 합쳐진 어노테이션
  • @RestController를 사용하면 각 메서드마다 @ResponseBody를 추가할 필요가 없다.
  • REST 방식의 데이터를 처리하는 여러 기능을 가지고 있다.
  • @Controller는 주로 View를 반환하기 위해 사용하는 반면, @RestController는 객체를 반환한다. 반환하려는 주류는 JSON 형태의 객체 데이터이다.

 


응답코드

  • 200 : 클라이언트 요청 정상수행 (응답에 대한 메시지가 포함)
  • 201 : 리소스 생성 요청에 대한 정상처리
  • 202 : 리소스 생성 요청이 비동기적으로 처리될 때 사용
  • 204 : 클라이언트 요청 정상수행 (응답에 대한 메시지 미포함, 보통 삭제요청에 사용)
  • 400 : 클라이언트 요청이 부적절할 때 사용 (부적절한 이유를 응답 Body에 넣어줘야 함)
  • 401 : 클라이언트가 인증되지 않은 상태에서 보호된 리소스를 요청할 때 사용
  • 403 : 클라이언트가 인증상태와 무관하게 응답하고 싶지 않은 리소스를 요청할 때 사용 (400 사용을 권장)
  • 404 : 클라이언트가 요청한 리소스가 존재하지 않을 때 사용
  • 405 : 클라이언트가 불가능한 메소드를 사용했을 때


출처: https://memostack.tistory.com/180 [memostack:티스토리]

+ Recent posts