본문 바로가기

HTTP

HTTP- Rest Api

Rest Api란?

 인터넷과 웹을 통해서 나의 컴퓨터를 제어할 때 어떻게 해야지 좋은 api를 설계할지를 고민한 것이 Rest Api의 결과물이라고 볼 수 있다.
Rest Api는 특정한 기술이 아닌 HTTP를 이용하여 Api를 설계할 때 위한 올바르게 설계하기 위한 모범적인 방법론이다.

URI 설정

Rest Api에서 URI를 설정할 때는, 동사를 사용하지 않는다.
예를 들어 "/createMovie", "/getMovie/inception"이라는 uri가 있을때 이를 Restful하게 설계하기 위해선 다음과 같이 변경한다.

  • "/createMovie" -> "/movie"
  • "/getMovie/inception" -> "/movies/inception"

컬렉션의 경우 movies와 같이 뒤에 s를 붙여 복수형을 사용하고, 기존의 create, get과 같은 동사들은 Http method를 이용하여서 인터렉션 하면된다.

Http Method

우리가 많이 듣던 GET, POST...등이 여기에 속한다. Http method에서는 각 CRUD. Create, Read, Update, Delete에 맞는 method가 준비되어 있다.

  • Create: POST
  • Read: GET
  • Update: PUT | PATCH
  • Delete: DELETE

사실 POST 하나만 가지고도 Create뿐만이 아닌  Update에도 이용이 가능하지만, Rest Api에서는 POST를 생성만을 위해서 사용하자고 권고하였다.

 PUT의 경우 전체 내용을 수정하는 기능으로 만일 특정 데이터를 보내지 않은 경우 보내지 않은 파라미터의 데이터는 삭제된다. 이는 기본적으로 업데이트할 때 전체내용을 삭제하고 기존 내용을 리퀘스트로 덮어 씌우는 것이기 때문이다. 따라서 전달되지 않은 파라미터의 경우 내부값이 비어있게 된다. 

 PATCH의 경우 특정 값만 수정이 가능하고, 때문에 파라미터로 전달한 값만 변경이 되므로 PUT과 같이 전체 수정이 아닌 일부만 수정할 때 사용한다.

결론

결론적으로 Rest Api를 설계한다면 다음과 같은 형식이 된다.

  1. GET /movies/inception : 영화리스트 중에서 inception이라는 영화의 정보를 가져온다. 
  2. POST /movies/inception : 영화리스트 중에서 inception이라는 영화 정보를 생성한다.
  3. PUT /movies/inception : 영화리스트 중에서 inception이라는 영화의 전체 내용을 업데이트한다.
  4. PATCH /movies/inception : 영화리스트 중에서 inception이라는 영화의 일부 내용을 업데이트한다.

'HTTP' 카테고리의 다른 글

HTTP- 서블릿 개념, 동시 요청, 멀티 쓰레드  (0) 2024.01.06
HTTP- GET, POST Method 정리  (0) 2023.06.25