HTTP Method

윤비·2023년 11월 23일
0

HTTP Method 종류


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

HTTP메소드의 종류는 총 9가지가 있다. 이중 주로 쓰이는 메소드는 5가지로 보면된다.

주요 메소드

  • GET : 리소스 조회
  • POST : 요청 데이터 처리, 주로 등록에 사용
  • PUT : 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성
  • PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경)
  • DELETE : 리소스 삭제

기타 메소드

  • HEAD : GET과 동일하지만 메시지 부분(body 부분)을 제외하고, 상태 줄과 헤더만 반환
  • OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)
  • CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
  • TRACE : 대살 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행


HTTP메서드 - GET

  • 리소스 조회 메서드 (Read)
  • 만일 틀서버에 전달하고 싶은 데이터는 쿼리스트링 을 통해서 전달

    쿼리스트링 예시 : GET /members/100? username=inpa&height=200

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

정적 데이터 조회 과정

  • 이미지,정적 텍스트 문서 GET
  • 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능
  1. 클라이언트에서 /members/100 으로 100번 맴버를 조회해서 정보를 달라고 GET 요청

2.서버에서는 요청 메세지를 분석해 내부의 유저정보를 조회한 뒤 결과 Response를 만든다.

  1. 서버에서 클라이언트로 응답을 해준다. 그러면 클라이언트에서 정상적으로 받으면 200 OK status를 가지며, 회원정보를 얻게 된다.

    • 예시에서는 JSON 형태의 테이터이지만 실제로는 HTML일수도 있고 이미지 같은 멀티미디어 파일일 수도 있고 다양하다.

동적 데이터 조회 과정

  • 주로 검색, 게시판 목록에서 검색어로 이용
  • 쿼리 파라미터 사용해서 데이터를 전달
  • 쿼리 파라미터는 key1=value1&key2=value2 구조로 되어 있음
  1. 요청 URL 뒤에 ?q=hello&hl=ko 쿼리 파라미터를 줘서 상세한 조회 데이터를 얻는다.

HTML Form 데이터 조회 과정

  • HTML From 태그 문서로 사용자와 UI로 상호작용하여 서버와 통신
  • HTML Form 전송은 GET, POST만 지원
  1. 웹문서에서 폼 입력칸에 데이터를 적고 전송 버튼을 누른다.

  2. 지정한 GET 메서드 동작에 따라 input 태그안에 들어간 값들이 쿼리스트링으로 서버 전송된다.



HTTP 메서드 - POST

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

JSON 데이터 전송 과정

  1. 클라이언트는 body에 등록한 회원 정보를 JSON 형태로 만들어 담고 서버로 전송한다.

  2. 서버에서는 받은 메세지를 분석해 로직 대로 처리 한다. 예를 들어 데이터베이스에 등록하고 신규 아이디를 생성한다.

  3. 신규회원에 대한 데이터를 바디에 담아서 클라이언트로 응답한다.

  • 신규 자원 생성은 200이나 201로 응답을 보낸다.
  • Location은 자원이 신규로 생성된 URI 경로를 의미한다.

HTML From 데이터 전송 과정

  • HTML From 태그 문서로 사용자와 UI로 상호작용하여 서버와 통신
  • 회원 가입, 상품 주문, 데이터 변경에 이용
  • HTML From 전송은 GET, POST만 지원
  1. 웹문서에서 폼 입력칸에 데이터를 적고 전송 버튼을 누른다.

  2. 지정한 POST 메서드 동작에 따라 input 태그안에 들어간 값들이 쿼리스트링으로 서버로 전송한다.


Info
[Content-Type 헤더 종류]

Content-Type: application/x-www-form-urlencoded

  • From의 내용을 HTTP 메시지 바디를 통해서 전송(key=value,쿼리 파라미터 형식)
  • 전송 데이터를 url encoding 처리
  • 예) abc김 -> abc%EA%B9%80

Content-Type: multipart/form-data

  • 파일 업로드 같은 바이너리 데이터 전송 시 사용
  • 다른 종류의 여러 파일과 Form의 내용 함께 전송 가능 그래서 이름 multipart이다.

Content-Type: application/json

  • TEXT,XML,JSON 데이터 전송 시 사용

파일 데이터 전송 과정

  • enctype을 multipart/form-data로 작성해 해당 폼에 파일이 있다는 것을 표시한다.
  • 바이너리 데이터 전송시 사용한다.
    *multipart/form-data 형식이라면 HTTP 메세지에 임의의 구분자(------XXX)가 From 데이터간 구분을 지어준다.
  • 여러 개의 Content-Type에 대한 데이터를 보낼 수 있다.
profile
안녕하세요 응애 나 애기개발자

0개의 댓글