컴퓨터 공학/Web & Network

[Web/HTTP] HTTP Methods

HSRyuuu 2023. 7. 18. 12:55

HTTP Method

HTTP 메서드란 클라이언트와 서버 사이의 요청(Request)과 응답(Response) 데이터를 전송하는 방식을 말한다.

요청을 보낼 때, HTTP 메서드로 서버가 수행해야 할 동작을 지정하는 방법이다.

 

HTTP는 아래와 같은 Method 들을 사용해서 요청한다.

안전 (Safe) : 호출해도 리소스를 변경하지 않는다.

CRUD : Create, Read, Update, Delete

멱등성 : 동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고,

서버의 상태도 동일하게 남을 때, 해당 HTTP 메서드가 멱등성을 가졌다고 말한다.

 

이외에도 아래와 같은 메서드들이 존재하지만, 위의 5개의 메서드를 주로 사용한다.

  • HEAD : GET과 동일하지만, 헤더 데이터만 반환한다.
  • OPTIONS : 대상 리소스에 대한 통신 가능 옵션을 설명
  • TRACE : 요청메시지 반환
  • CONNECT : 프록시 동작의 터널 접속으로 요청

GET

  • 리소스 조회
  • 서버에 전달하고 싶은 데이터는 query(쿼리 파라미터, 쿼리 스트링)를 통해서 전달
  • 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장하지 않음

클라이언트가 서버에 서버에 요청 → 서버에서 데이터(HTML, JSON 등) 생성 → 클라이언트에 데이터 전달

 

GET 방식은 원하는 정보를 query파라미터 방식으로 요청해야 하기 때문에 중요한 정보인 경우 보안상의 문제가 있다.

이 때는, POST 방식을 사용하여 해결한다. POST 방식은 데이터를 message-body에 포함하여 전달한다.


POST

  • 메시지 바디를 통해 서버로 요청 데이터 전달
  • 서버가 요청 데이터를 처리
  • 메시지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행
  • 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용

클라이언트가 서버에 메시지 전달 → 서버 - 신규 리소스 생성 → 응답

(example)

  • 메시지를 서버 에 저장, 게시
  • 서버가 갖고있지 않은 새 리소스 생성
  • 기존 자원에 데이터 추가

PUT

  • 리소스를 대체(수정)
  • 있으면 대체 / 없으면 생성
  • 클라이언트가 리소스를 식별(지정)

(주의) 리소스를 완전히 대체한다.

//기존 데이터
{
	"userName": "hyun",
	"age":20
}
//PUT
{
	"age":50
}
//결과 (userName 필드는 삭제됨)
{
	"age":50
}

PATCH

  • 리소스 부분 변경
//기존 데이터
{
	"userName": "hyun",
	"age":20
}
//PATCH
{
	"age":50
}
//결과 (age 필드만 변경됨)
{
	"userName": "hyun",
	"age":50;
}

DELETE

  • 리소스 제거(삭제)

(ex) DELETE /members/100 HTTP/1.1 members/100 삭제

반응형