[Web] HTTP 메소드

Junyeong Kim·2024년 1월 26일
0

개발

목록 보기
7/16
post-thumbnail

HTTP란?

HTTP란 HyperText Transfer Protocol의 약자로, 뜻 그대로 HyperText를 통신하기 위한 규약이다.
웹 브라우저와 서버 사이에 통신을 하기 위해 정해놓은 약속이라고 이해하면 된다.

이 HTTP에 보안성을 더한 것이 HTTPS이다.

HTTP 메소드는 자원을 어떤 방식으로 주고받을지 명시해주는 것이다.
대표적으로 CRUD의 역할을 하는 4가지의 메소드를 많이 사용한다.

CRUD란?

C(Create) R(Read) U(Update) D(Delete)를 의미한다. 보통 게시판의 기능을 생각하면 이해가 쉽다.

  • C : 게시글 작성
  • R : 게시글 조회
  • U : 게시글 수정
  • D : 게시글 삭제

아래에서는 각각의 기능을 하는 메소드들을 정리한다.

주요 HTTP 메소드

GET

R(Read), 즉 데이터를 받아서 조회할 때 사용하는 메소드이다. GET 통신의 경우 아래와 같은 특징을 가진다.

  • 멱등성(동일한 요청을 여러번 수행해도 매번 같은 결과)을 가진다.
  • 리퀘스트를 보낼 때 body가 필요하지 않다.
  • 요청 성공 시 200 응답 코드와 함께 데이터가 담긴 body를 응답 받는다.
  • 캐싱 사용이 가능해서 이전에 요청했던 데이터의 경우 빠르게 조회가 가능하다.

POST

C(Create), 새로운 리소스를 생성할 때 사용하는 메소드이다.

  • 멱등성을 가지지 않는다.
  • 리퀘스트 시 생성할 리소스의 정보를 담은 body와 content-type을 포함해야한다.
  • 성공적으로 리소스가 생성되었을 때 201 응답 코드를 반환한다.
  • 캐싱이 일반적으로 불가능하다.
  • 서버의 데이터 변경이 일어날 수 있다.
  • 이미 리소스가 있어도 새로운 리소스를 생성한다.

PUT

U(Update), 리소스를 생성하거나, 기존의 리소스를 수정할 때 사용하는 메소드이다.

  • 멱등성을 가진다.
  • 리퀘스트 시 생성할 리소스의 정보를 담은 body와 content-type을 포함해야한다.
  • URL에는 어떤 리소스를 수정할지 파라미터를 포함해야한다.
  • 서버에 리소스가 없을 때만 생성하고, 아니라면 리퀘스트 데이터로 대체할 뿐 새롭게 생성하지는 않는다.

PATCH와의 차이점?

PUT과 PATCH는 기존의 리소스를 수정할 수 있는 메소드라는 점에서 공통점을 가진다.
두 메소드의 차이점을 예시로서 정리해보면,,

기존의 데이터가 "name" : "Kim", "age" : 23 이고, "age" : 24라는 리퀘스트를 보낸다고 해보자.

  • PUT
    "name" : "Kim", "age" : 23"age" : 24
  • PATCH
    "name" : "Kim", "age" : 23"name" : "Kim", "age" : 24

PUT의 경우 보낸 요청에 담긴 데이터로 기존의 데이터를 완전히 대체하고,
PATCH의 경우 보낸 요청에 담긴 데이터를 기존 데이터의 해당하는 부분에만 대체한다.

DELETE

D(Delete), 기존릐 리소스를 삭제할 때 사용하는 메소드이다.

  • 멱등성을 가진다.
  • 어떤 리소스를 삭제할지 URL에 파라미터로 포함할 뿐, body나 content-type을 포함하지 않는다.

이외의 메소드들

  • HEAD : 데이터를 조회하는 GET 메소드와 같지만, 상태 줄과 헤더만 조회한다.
  • CONNECT : 요청 리소스와 서버로의 양방향 연결을 맺는다.
  • OPTIONS : 서버에 대해 허용된 통신을 설정하는 데 쓰인다.

참고

아래 링크는 자바 스프링부트를 입문하며 공부했을 때 CRUD를 간단하게 구현해본 코드 + 간단하게 풀어본 문제를 정리한 글 링크이다.

CRUD(Rest API) 구현 실습 코드
간단한 계산기 API 만들기

정보 출처

https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
https://velog.io/@yh20studio/CS-Http-Method-%EB%9E%80-GET-POST-PUT-DELETE
https://rachel0115.tistory.com/entry/HTTP-%EB%A9%94%EC%84%9C%EB%93%9C-%EC%A0%95%EB%A6%AC-GET-POST-PUT-PATCH-DELETE

profile
개발자가 되고싶어?? 네

0개의 댓글

관련 채용 정보