[CS] HTTP 메서드

Adler·2024년 1월 2일

CS

목록 보기
3/13
post-thumbnail

HTTP 메서드

메서드의 종류

HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청(Request)와 응답(Respnse) 데이터를 전송하는 방식을 일컫는다. 다시 말해 서버가 수행해야 할 동작을 지정 하는 요청을 보내는 방법이다.

HTTP 메서드 - GET

  • 리소스 조회 메서드 (Read)
  • 만일 서버에 전달하고 싶은 데이터는 쿼리 스트링을 통해서 전달
  • 쿼리스트링 외에 메시지 바디를 사용해서 데이터를 전달 할 수 있으나, 서버에서 따로 구성해야 되기 때문에 지원하지 않는 곳이 많아 권장하지 않음
  • 조회할 때 POST도 사용할 수 있지만, GET 메서드는 캐싱이 가능해 GET을 사용하는 것이 유리하다.

쿼리 스트링

쿼리 스트링은 웹 요청에서 URL 의 끝에 위치한 일련의 매개변수다. <키-값> 쌍으로 구성되어 있다.
이는 클라이언트가 서버로 데이터를 전달하는데 사용된다. 쿼리스트링은 '?'로 시작하며, 각각의 매개변수는
'&'으로 구분된다.

https://example.com/search?q=keyword&page=2

이 경우 '?' 이후의 부분이 쿼리 스트링이다.
'q=keyword' 와 'page = 2'는 두 개의 쿼리 매개변수다.
여기서 'q'와 'page' 는 각각 매개변수의 이름, 'keyword' 와 '2'는 각각의 값이다.

쿼리스트링은 주로 검색 엔진에서 검색어를 전달하거나, 페이지 번호, 필터, 정렬 등의 사용자 입력을
서버로 전송하는 데 사용된다.

정적 데이터 조회 과정

  • 이미지, 정적 텍스트 문서 GET
  • 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능
예시 코드
GET/members/100
  1. 클라이언트에서 /members/100 으로 100번 멤버를 조회해서 정보를 달라고 GET 요청
  2. 서버에서는 요청 메세지를 분석해 내부의 유저정보를 조회한 뒤 결과 Response를 생성
  3. 서버에서 클라이언트로 응답, 클라이언트에서 정상적으로 받으면 '200 OK status'를 가지고, 회원정보를 얻게 됨

HTTP 메서드 - POST

  • 전달한 데이터 처리/생성 요청 메서드 (Create)
  • 메시지 바디(body)를 통해 서버로 요청 데이터 전달하면 서버는 요청 데이터를 처리하여 업데이트
  • 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용
  • 만일 데이터를 GET 하는데 있어, JSON으로 조회 데이터를 넘겨야 하는 경우 POST 사용

JSON 데이터 전송 과정

  • 클라이언트는 body에 등록할 회원 정보를 JSON 형태로 만들어 담고 서버로 전송한다.
POST/members HTTP/1.1
Content-Type : application/json

{
"username" : 'young',
"age" : 20 
}
  • 서버에서는 받은 메시지를 분석해 로직 대로 처리 , 데이터베이스에 등록하고 신규 아이디 생성
  • 신규회원에 대한 데이터를 바디에 담아서 클라이언트로 Response
HTTP/1.1 201 Created... // 신규 자원 생성은 200 OR 201로 응답
...
Location : /members/100 // Location은 자원이 신규로 생성된 URL 경로를 의미 

HTTP 메서드 - PUT

  • 리소스를 대체하는 매서드 (Update)
  • 만일 요청 메세지에 리소스가 있으면 덮어쓰고, 없으면 새로 생성한다
    /members/100 데이터 존재 --> 기존의 것 대체
    /members/100 데이터 X --> 새로 생성
  • 데이터를 대체하기 위해 클라이언트가 리소스의 구체적인 전체 경로를 지정해야함
    POST/members : 멤버 새로 추가
    PUT / members / 100

HTTP 메서드 - PATCH

  • 리소스 일부 부분을 변경하는 메소드(Update)
  • 만일 PATCH를 지원하지 않는 서버에서는 대신에 POST를 사용할 수 있다.

PATCH 예시

  1. age 만 50으로 변경하려고 해당 데이터를 PATCH로 전달함
PATCH / memners/100 HTTP/1.1
Content-Type : application/json

{
"age": 50
}
  1. PUT과 다르게 회원정보에서 age만 변경된다.

HTTP 메서드 - DELETE

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

DELETE 예시

  1. 100번째 멤버를 제거하기 위해 DELETE로 전달함
DELETE /members/100 HTTP/1.1
...
  1. 서버에서 요청을 받고 데이터베이스의 해당 리소스를 제거한다.

참고
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

profile
지식을 정리하기 위한 블로그입니다.

0개의 댓글