RESTful API를 위한 Http method의 이해
Http Method 의 종류
- Http 메소드는 여러개 존재합니다. 그 중 가장 보편적으로 사용중인 4가지의 메소드에 대해 정리하겠습니다.
- Http 프로토콜은 기본 CRUD에 해당하는 POST, GET, UPDATE, DELETE 메소드를 제공합니다.
- GET
- GET 은 말 그대로 무엇인가를 얻어올 때 사용하는 메소드입니다. (read-only)
- 웹 서버에 요청하여 원하는 값 또는 데이터를 가지고 오는데 사용합니다.
/notice/1
을 GET 으로 요청하면, 게시판 글 중 id가 1인 게시글을 가지고오는 요청을 처리하게 됩니다.- GET 은 몇번을 요청해도 값이 변하지 않기 때문에
repeatable, idempotent
1 메소드라고도 합니다.
- DELETE
- DELETE 는 특정 값을 삭제하는 요청에 사용하는 요청입니다.
- 웹서버 또는 데이터 베이스의 값을 삭제하는 요청에 사용됩니다.
/notice/1
을 DELTE 로 요청하면, 게시판 글 중 id가 1인 게시글을 삭제하는 요청을 처리하게 됩니다.- DELTE 를 한번 처리하면 데이터가 삭제되고, 반복해서 요청을 하면 이미 값이 삭제되었기 때문에 아무일도 일어나지 않는다.
- 따라서, 여러번 요청해도 문제가 발생하지 않기 때문에 DELETE 역시
repeatable, idempotent
메소드입니다.
- PUT
- PUT 은 CRUD 중 UPDATE 에 속하는 메소드로 상태를 갱신하는데 사용합니다.
- 이미 존재하는 기존의 데이터를 갱신(updata)하는 요청에 사용합니다.
/notice/1
을 메세지와 함께 PUT 으로 요청하면 id가 10인 게시글의 데이터를 요청 메세지로 교체하게 됩니다.- 같은 요청을 100번 반복해도 메세지는 변하지 않기 때문에 마지막의 메세지 값은 갱신을 원하는 값과 정확히 일치합니다.
- 따라서, 같은 요청을 여러번해도 값을 갱신하는 것에는 문제가 없기 때문에 PUT 역시
repeatable, idempotent
메소드 입니다.
- POST
- POST 메소드는 특정 값을 생성하기 위해 사용되는 메소드 입니다.
- 원하는 데이터를 데이터 베이스나 파일에 저장하기 위해 사용하는 메소드 입니다.
- POST 는
/notice
와 같이 파라미터를 포함하지 않고 요청하게 됩니다.- 실제 생성을 원하는 데이터는 요청의 header 에 담겨있습니다.
- 같은 요청을 여러번 반복시킨다면 요청한 횟수만큼 데이터를 생성합니다.
/notice
는 id = 10 인 게시글을 생성한다.- 해당 요청이 반복된다면
/notice
요청은 id = 11 인 게시글을 또 생성하게 된다. - 만약 요청이 10번 반복된다면 데이터는 같지만 id는 다른 10개의 데이터가 생성되게 됩니다.
- 따라서 POST 는
non-repeatable, non-idempotent
메소드 입니다.
-
idempotent : 멱등법칙, 멱등, 여러번 처리해도 결과가 같은 법 ↩
Comments