Computer Theory/Web

HTTP 메서드 종류

JHeaon 2024. 5. 3. 11:35

 

 

HTTP Method 종류

HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청, 응답에 대한 데이터 전송 방식을 말한다.

 

  • 주요 메소드
    • GET : 리소스 조회
    • POST:  요청 데이터 처리, 주로 등록에 사용
    • PUT : 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성
    • PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경)
    • DELETE : 리소스 삭제
  • 기타 메소드
    • HEAD : GET과 동일하지만 메시지 부분(body 부분)을 제외하고, 상태 줄과 헤더만 반환
    • OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)
    • CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
    • TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

 

 

 

 

GET 

리소스 조회 메서드이며, 틀 서버에 전달하고 싶다면 쿼리 스트링을 통해서 전달한다. 

 

예)

GET /members/100?username=inpa&height=200

쿼리 스트링 외에 메시지 바디를 사용해서 데이터를 전달 할 수 있으나, 서버에서 따로 구성하여야 하기 때문에 지원하지 않는 곳들이 많아서 권장하지 않는다. 조회에서도 POST을 이용하여 처리 할 수 있으나 GET은 캐싱이 가능하기 때문에 GET을 이용하여 처리하는 것이 유리하다. 

 

 

- 정적 데이터 조회 과정 : 

  1. 클라이언트 에서 /members/100 으로 100번 맴버를 조회하여 정보를 얻기위해 GET요청 한다.
  2. 서버에서는 요청 메세지를 분석해 내부 정보를 조회한뒤 결과 Response를 만든다. 
  3. 서버에서 클라이언트로 응답을 한다. 클라이언트에서 정상적으로 받으면 http status는 200과 회원 정보를 받는다.

 

- 동적 데이터 조회 과정

  1. 요청 URL 뒤에 쿼리 파라미터를 줘서 조회 데이터를 얻는다.
  2. 쿼리 파라미터는 ?을 시작으로 & 으로 구분하여 보낸다. 
https://www.google.com/search?q=hello&hl=ko

 

 

- Form 데이터 조회 과정

HTML Form태그 문서로 사용자와 UI로 상호작용하여 서버와 통신한다. HTML 전송은 GET, POST만 지원하고 있다. 

  1. 웹 문서에서 폼 입력칸에 데이터를 적고 전송 버튼을 누른다. (Form 태그 이용)
  2. 지정한 GET 메서드 동작에 따라 input 태그안에 들어간 값들이 쿼리스트링으로 서버로 전송된다. 

 

 

 

 

 

 

 

POST

전달한 데이터를 처리하거나 생성하는 메서드이다. 메시지 바디를 통해 서버로 요청 데이터를 전달하면 서버는 요청 데이터를 처리하여 업데이트한다. 주로 전달된 데이터로 신규 리소스를 등록하거나 프로세스 처리를 하는데 사용한다. 

만약 데이터를 GET하는데 있어, JSON으로 조회 데이터를 넘겨야 하는 애매한 경우에는 POST로 처리할 때도 있다. 

 

 

 

- JSON 데이터 전송과정

  1. 클라이언트는 body에 등록할 회원 정보를 JSON 형태로 만들어 담고 서버로 전송한다. 
  2. 서버에서는 받은 메세지를 분석해 로직 대로 처리한다. 예를 들어서 데이터베이스에 등록하고 신규아이디를 생성한다. 
  3. 신규 회원에 대한 데이터를 바디에 담아서 클라이언트로 응답한다. 
    - 신규 자원 생성은 200 이나 201으로 응답으로 보낸다.
    - Location은 자원이 신규로 생성된 URI 경로를 의미한다.

 

- Form 데이터 전송과정

HTML Form 태그 문서로 사용자와 UI로 상호작용하며 서버와 통신한다. 

  1. 웹 문서에서 폼 입력칸에 데이터를 적고 전송 버튼을 누른다.
  2. 지정한 POST 메서드 동작에 따라 input 태그 안에 들어간 값들이 쿼리 스트링을  서버로 전송된다. 

Content-Type 헤더의 종류는 다음과 같다.

application/x-www-form-urlencoded Form의 내용을 HTTP 메시지 바디를 통해서 전송한다. 전송 데이터를 url encoding 처리를 하여 보낸다. 

예) abc김 -> abc%EA%B9%80
multipart/form-data 파일 업로드 같은 바이너리 데이터 전송 시 사용하며 다른 종류의 여러 파일과 Form의 내용 함께 전송 가능 하다.
application/json TEXT, XML, JSON 데이터 전송 시 사용 한다.

 

- 파일 데이터 전송 과정

  1. enctype을 multipart/form-data 로 작성해 해당 폼에 파일이 있다는 것을 표시한다. 
  2. 바이너리 데이터  전송시 사용한다.
  3. multipart/form-data 형식이라면 HTTP 메세지에 임의의 구분자가 Form 데이터간 구분을 지어준다.
  4. 여러 개의 Content-Type에 대한 데이터 

 

 

 

 

PUT

리소스를 수정하는 메서드 이다. 요청 메세지에 리소스가 있다면 덮어쓰고, 없으면 새로 생성한다. 데이터를 대체해야 하기 때문에 클라이언트가 리소스의 구체적인 전체 경로를 지정하여 보내야 한다. 

 

- PUT 요청에 리소스가 있는 경우

  1. N번 유저의 리소스를 교체하겠다는 요청을 보낸다.
  2. 기존 데이터가 있다면 완전히 대체한다. 

- PUT 요청에 리소스가 없는 경우

  1. N번 유저의 리소스를 교체하겠다는 요청을 보낸다. 
  2. 기존 데이터가 없다면 POST와 같이 신규로 생성한다. 

만약 PUT요청에 일부 리소스만 변경하고 싶어서 변경하고자 하는 필드만 보낸다면, 나머지 필드는 삭제된다. 따라서 나머지 필드를 유지 한 채, 일부 필드만 수정하고 싶다면 PATCH 메서드를 사용하여야 한다.

 

 

 

 

PATCH

리소스 일부 부분을 변경하는 메소드이다. PATCH을 지원하지 않는 서버에서는 POST을 사용하여 처리할 수 있다.

 

 

 

 

DELETE

리소스를 제거 하는 메소드이다. 상태코드는 대부분 200을 사용하며 상황에 따라 204을 사용할때도 있다. 

 

 

 

 

 

HEAD

GET과 동일하지만 서버에서 Body를 Return 하지 않는다. Resource을 받지 않고 오직 찾기만을 원할떄 사용한다. (응답의 상태 코드만 확인할때 사용한다. 서버의 응답 헤더를 봄으로써 Resource가 수정 되었는지 확인 가능하다. 

 

TRACE

일종의 검사용 메서드로 클라이언트의 요청 패킷이 방화벽, Proxy 서버, Gateway 등을 거치면서 패킷의 변조가 일어날 수 있는데 이 때 서버에 도달 했을때의 최총 패킷의 요청 패킷 내용을 응답 받을 수 있다. 즉 요청했던 패킷 내용과 응답 받은 패킷 내용을 비교하여 변조 유무를 확인 할 수 있다. 요청의 최종 수신자는 반드시 송신자에게 http status 200과 응답의 내용 body을 수신한 메세지를 반송하여야 한다. 최조 Client 요청에는 body가 포함 될 수 없다. 

 

 

 

 

 

OPTION

본 요청을 하기전에 안전한지 미리 검사할 때 사용하는 메소드이다.  서버의 지원이 가능한 HTTP 메서드와 출처를 응답 받아 CORS 정책을 검사하기 위한 요청이다. 

 

 

 

 

 


https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-HTTP-%EB%A9%94%EC%84%9C%EB%93%9C-%EC%A2%85%EB%A5%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC

 

🌐 HTTP 메서드 종류 & 요청 흐름 💯 총정리

HTTP Method 종류 HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식을 일컫는다. 쉽게 말하면 서버에 주어진 리소스에 수행하길 원하는 행동,

inpa.tistory.com

 

'Computer Theory > Web' 카테고리의 다른 글

도메인과 DNS 그리고 DNS의 작동원리  (0) 2024.05.23
HTTP란 무엇인가?  (0) 2024.05.03
API에 대하여  (0) 2023.12.12
Transaction과 ACID  (0) 2023.12.09
ORM(Object Ralational Mapping)  (0) 2023.12.09

'Computer Theory/Web'의 다른글

  • 현재글 HTTP 메서드 종류

관련글