본문 바로가기
CS

[CS] HTTP Method 종류

by BK0625 2023. 8. 30.
반응형

HTTP Method란 클라이언트와 서버 사이에 이루어지는 Request와 Response 데이터를 전송하는 방식을 말한다. 서버에 주어진 리소스에 수행해야 할 동작을 지정하는 요청을 보내는 방법이다.

 

HTTP Method의 종류는 9가지가 있다. 이 중 주로 쓰이는 5개의 메소드를 알아보자

 

  • GET - 리소스 조회
  • POST - 요청 데이터 처리, 등록에 주로 사용
  • PUT - 리소스를 대체(덮어쓰기), 만약 없다면 생성
  • PATCH - PUT과는 달리 리소스를 일부분만 변경
  • DELETE - 리소스 삭제

그 외에는 HEAD, OPTIONS, CONNECT, TRACE 등이 있다.

 

 

 

GET

서버에 어떤 리소스를 조회하고 싶을 때 사용하는 메서드이다.(Read) 쿼리 스트링을 사용할 수도 있고 리소스 경로로 단순하게 조회도 가능하다.

 

주로 정적 데이터(이미지, 정적 텍스트 문서)를 조회할 때에는 리소스 경로로 단순하게 조회하는 경우가 많다. 

 

리소스 경로로 글을 조회

 

위 사진에선 클라이언트에서 /48 경로에 있는 게시글을 조회해서 정보를 달라고 요청했고 서버에서는 요청 메세지를 분석해 내부의 유저 정보를 조회한 뒤에 Response를 만들어 응답하며 클라이언트에서 정상적으로 받으면 게시글 데이터를 얻게 된다.

 

쿼리 스트링은 주로 검색이나 게시판 목록에서 검색어로 이용이 되는데 쿼리 파라미터를 사용해서 데이터를 전달한다.

 

?key1=value1&key2=value2 식으로 전달되는 것이 쿼리스트링

 

이 쿼리 파라미터를 이용해 상세한 조회 데이터를 얻을 수 있다.

 

 

 

 

POST

POST는 주로 전달할 데이터를 처리하거나 생성을 요청할 때 주로 쓰인다. 메세지 바디를 통해 서버로 요청 데이터를 전달하면 서버는 요청 데이터를 처리하여 업데이트를 하게 된다. 주로 신규 리소스 등록이나 프로세스 처리에 사용하게 된다. JSON으로 데이터를 넘길 때 사용한다.

 

 

이런 식으로 JSON에 담아 서버로 전송하면 서버에서는 받은 메세지를 분석해 로직대로 처리한다. 예를 들면 신규 데이터를 생성한다던지..신규 자원 생성은 주로 200이나 201로 응답을 보낸다.

 

 

 

 

PUT

PUT은 해당 리소스를 교체하겠다는 요청을 보낼 때 사용하는 메서드이다. 예를 들면 데이터베이스에 username과 age라는 컬럼이 있는 테이블이 있다고 하고 거기엔

 

 

이런 데이터가 있다고 가정 했을 때

 

 

이렇게 해당 경로로 PUT 요청을 보내면 해당 데이터로 완전히 데이터가 바뀌게 된다. 만약 해당 경로에 PUT 요청을 했을 때 리소스가 없을 경우에는 POST와 같이 신규로 생성하게 된다. 만약 부분적으로 데이터를 바꾸고 싶어 일부분의 데이터만 PUT으로 전달하면 기존 데이터가 완전히 대체되어 바꾸지 않은 부분의 데이터가 삭제되므로 이 경우에는 PATCH 메소드를 사용해야 한다.

 

 

 

 

 

PATCH

리소스 일부 부분만 변경하는 메소드로 PATCH를 지원하지 않는 서버라면 POST를 사용할 수 있다. (아마 그냥 POST 쓰는 곳도 많을 것이다..) 위 경우 처럼 만약 내가 저 위 데이터에서 age만 바꾸고 싶다면

 

 

이렇게 PATCH 요청을 보내면 PUT과는 달리 데이터가 삭제되지 않고 age만 변경이 되게 된다.

 

 

 

 

DELETE

리소를 제거하는 메소드로서 상태코드는 대부분 200을 사용하고 상황에 따라 204를 사용한다.

 

 

만약 위 방식대로 요청을 보내면 해당 경로의 100번 데이터를 제거하기 위해 요청이 전달이 된 것이고 서버에서는 요청을 받고 해당 리소스를 제거하게 된다.

 

 

 

 

 

공부하면서 정리한 내용입니다. 모든 지적 감사히 받겠습니다:)

반응형

'CS' 카테고리의 다른 글

[CS] 프로세스,스레드,멀티스레드  (0) 2024.02.29
[CS] 운영체제 (5) 교착 상태  (0) 2023.07.28
[CS] 운영체제 (4) 동기화  (0) 2023.07.27
[CS] 운영체제 (3) CPU 스케줄링  (0) 2023.07.20
[CS] 운영체제 (2) 프로세스  (1) 2023.07.14