REST API & Http Method(GET, POST, PUT, DELETE)

IRISH·2024년 7월 7일
0

IT지식

목록 보기
12/12
post-thumbnail

REST

  • REST = Representational State Transfer
  • 구성 (= 자원 + 행위 + 표현)
    • 자원(Resource): URI
    • 행위(Verb): HTTP Method
    • 표현(Representations)

HTTP Method

  • HTTP Method는 크게 GET, POST, PUT, DELETE가 대표적

보통 CRUD에서 다음과 같이 이용

  • 조회: GET
  • 등록: POST
  • 수정: PUT
  • 삭제: DELETE

전체 종류

  • GET: 서버로 부터 데이터를 취득
  • POST: 서버에 데이터를 추가, 작성 등
  • PUT: 서버의 데이터를 갱신, 작성 등
  • DELETE: 서버의 데이터를 삭제
  • HEAD: 서버 리소스의 헤더(메타 데이터의 취득)
  • OPTIONS: 리소스가 지원하고 있는 메소드의 취득
  • PATCH: 리소스의 일부분을 수정
  • CONNECT: 프록시 동작의 터널 접속을 변경

멱등성(idempotent)

  • 멱등성이란 여러번 수행해도 결과가 같음을 의미
  • 즉, 호출로 인하여 데이터가 변형이 되지 않는다는 것을 의미

GET

  • 주로 데이터를 읽거나(Read) 검색(Retrieve)할 때에 사용되는 메소드
  • 성공시 : XML이나 JSON과 함께 200 (Ok) HTTP 응답 코드를 리턴
  • 실패시 : 주로 404 (Not found) 에러나 400 (Bad request) 에러가 발생
  • 조회할 때만 사용 / 수정할 때는 사용 x
  • GET 요청은 idempotent함
  • 같은 요청을 여러 번 하더라도 변함없이 항상 같은 응답을 받을 수 있다.
  • 데이터를 변경하는 연산에 사용하면 안됨
  • 데이터를 조회하는 것이기 때문에 요청시에 Body 값과 Content-Type 가 비워져있음
  • 조회할 데이터에 대한 정보는 URL을 통해서 파라메터를 받고 있는 모습을 볼 수 있음
  • GET은 캐싱이 가능하여 같은 데이터를 한번 더 조회할 경우에 저장한 값을 사용하여 조회 속도가 빨라짐
예시 > GET /user/1

POST

  • POST 메소드는 주로 새로운 리소스를 생성(create)할 때 사용
  • 성공시 : 201 (Created) HTTP 응답을 반환
  • POST 요청은 idempotent 하지 않음
  • 같은 POST 요청을 반복해서 했을 때 항상 같은 결과물이 나오는 것을 보장하지 않음
  • 데이터를 생성하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야 함
  • URL을 통해서 데이터를 받지 않고, Body 값을 통해서 받음
예시

POST /user
body : {date : "example"}
Content-Type : "application/json"

PUT

  • PUT는 리소스를 생성 / 업데이트하기 위해 서버로 데이터를 보내는 데 사용
  • PUT 요청은 idempotent 합니다.
  • 동일한 PUT 요청을 여러 번 호출하면 항상 동일한 결과가 생성됨
  • 데이터를 수정하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야 함
  • URL을 통해서 어떠한 데이터를 수정할지 파라미터를 받음. 그리고 수정할 데이터 값을 Body 값을 통해서 받음
  • 성공시 : Body 값에 저장한 데이터 값을 저장하여 성공 응답을 보냄
예시
PUT /user/1
body : {date : "update example"}
Content-Type : "application/json"

DELETE

  • DELETE 메서드는 지정된 리소스를 삭제합니다.
  • 데이터를 삭제하는 것이기 때문에 요청시에 Body 값과 Content-Type 값이 비워져음
  • URL을 통해서 어떠한 데이터를 삭제할지 파라미터를 받음
  • 성공시 : Body 값 없이 성공 응답만 보내게 된다.
예시

DELETE /user/1

정리

보안 : GET 방식 vs POST 방식

  • GET과 비교하여 URL에 데이터의 정보가 들어 있지 않으므로 조금 더 안전하다고 볼 수 있음

속도 : GET 방식 vs POST 방식

  • GET 방식은 캐싱을 하기 때문에 여러번 요청시 저장된 데이터를 활용하므로 조금 더 빠를 수 있음

POST vs PUT

  • POST는 새로운 데이터를 계속 생성하기 때문에 요청시마다 데이터를 생성
  • PUT은 사용자가 데이터를 지정하고 수정하는 것이기 때문에 같은 요청을 계속하더라도 데이터가 계속 생성되지는 않음

PUT vs PATCH

  • PUT은 지정한 데이터를 전부 수정하는 Method이지만 PATCH는 정보의 일부분이 변경되는 방법
  • PUT은 멱등하지만, PATCH는 멱등하다고 볼 수 없음

참고

profile
#Software Engineer #IRISH

0개의 댓글