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
- 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능
- 클라이언트에서 /members/100 으로 100번 맴버를 조회해서 정보를 달라고 GET 요청

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

-
서버에서 클라이언트로 응답을 해준다. 그러면 클라이언트에서 정상적으로 받으면 200 OK status를 가지며, 회원정보를 얻게 된다.
- 예시에서는 JSON 형태의 테이터이지만 실제로는 HTML일수도 있고 이미지 같은 멀티미디어 파일일 수도 있고 다양하다.

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

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

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

HTTP 메서드 - POST
- 전달한 데이터 처리/생성 요청 메서드 (Create)
- 메시지 바디(body)를 통해 서버로 요청 데이터 전달하면 서버는 요청 데이터를 처리하여 업데이트
- 전달한 데이터로 주로 신규 리소스 등록, 프로세스 처리에 사용
- 만일 데이터를 GET 하는데 있어, JSON으로 조회 데이터를 넘겨야 하는 애매한 경우 POST를 사용
JSON 데이터 전송 과정
-
클라이언트는 body에 등록한 회원 정보를 JSON 형태로 만들어 담고 서버로 전송한다.

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

-
신규회원에 대한 데이터를 바디에 담아서 클라이언트로 응답한다.
- 신규 자원 생성은 200이나 201로 응답을 보낸다.
- Location은 자원이 신규로 생성된 URI 경로를 의미한다.

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

-
지정한 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에 대한 데이터를 보낼 수 있다.
