4월 23일 - HTTP 메소드

Yullgiii·2024년 4월 23일
0
post-thumbnail

HTTP 메소드와 특징

HTTP 메소드는 클라이언트가 서버에게 어떤 동작을 수행하길 원하는지를 알리는 방법이다. 다음은 일반적으로 사용되는 HTTP 메소드들과 그 설명이다:

  • GET: 서버에서 리소스를 조회할 때 사용된다. 데이터를 가져오는 데 사용되며, 서버의 상태를 변경하지 않는다.
  • POST: 서버에 데이터를 전송하여 리소스를 생성한다. 예를 들어, 게시판에 글을 작성할 때 사용된다.
  • PUT: 지정된 URL에 리소스를 생성하거나 업데이트한다. POST와 비슷하지만, PUT은 멱등(idempotent)이라는 특성을 가진다.
  • DELETE: 지정된 URL의 리소스를 삭제한다.
  • PATCH: 리소스의 부분적인 업데이트를 수행한다.
  • HEAD: GET과 유사하지만, 리소스의 본문 없이 헤더 정보만 반환한다.
  • OPTIONS: 대상 리소스에 대한 통신 가능한 HTTP 메소드를 설명하기 위해 사용된다.

HTTP 메소드의 멱등성

멱등성(idempotence)은 메소드를 여러 번 호출했을 때 동일한 결과가 나타나는 성질을 말한다. 예를 들어, DELETE 요청을 여러 번 수행해도 결과는 동일하게 해당 리소스가 삭제된 상태이다. HTTP에서 멱등한 메소드는 GET, PUT, DELETE, HEAD, OPTIONS 등이다. 이 메소드들은 여러 번 수행해도 리소스의 최종 상태가 같다. 반면, POST는 멱등하지 않다. POST로 같은 요청을 여러 번 보내면 동일한 작업이 여러 번 수행되어 다른 결과가 발생할 수 있다.

GET과 POST의 차이

  • GET

    • 데이터를 조회할 때 사용된다.
    • 데이터를 URL에 쿼리 문자열로 포함시켜 전송한다 (예: /search?q=query).
    • 멱등하며, URL이 캐싱되거나 북마크 될 수 있다.
    • 길이 제한이 있고, 보안이 취약할 수 있다.
  • POST

    • 서버에 데이터를 생성하거나 추가할 때 사용된다.
    • 데이터를 요청 본문(body)에 포함하여 전송한다.
    • 멱등하지 않으며, 같은 요청을 반복하면 다른 결과가 발생할 수 있다.
    • 보안성이 GET보다 높으며, 데이터 길이에 제한이 없다.

POST vs PUT vs PATCH

  • POST

    • 리소스를 생성할 때 사용된다.
    • 같은 요청을 여러 번 보내면 여러 개의 리소스가 생성될 수 있다.
  • PUT

    • 리소스를 생성하거나, 기존 리소스를 전체적으로 대체할 때 사용된다.
    • 요청을 여러 번 반복해도 하나의 리소스만 생성하거나 업데이트된다 (멱등).
  • PATCH

    • 리소스의 일부를 업데이트할 때 사용된다.
    • PUT과 달리 전체 리소스 대신 수정하고 싶은 부분만 보내 수정할 수 있다.

GET의 Body 사용에 대한 지양 이유

HTTP/1.1 이후로 technically GET 요청에서도 body를 포함할 수 있지만, 많은 서버와 캐싱 프로토콜이 이를 예상하지 않기 때문에 문제가 발생할 수 있다. GET 요청은 URL 자체에 데이터를 포함하여 이를 기반으로 캐싱하는 방식으로 설계되었으므로, 요청 본문을 사용하면 캐싱과 로깅이 어려워질 수 있다. 따라서 안정성, 최적화, 호환성 측면에서 GET의 요청 본문 사용을 지양하는 것이 좋다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글