HTTP 메서드 활용

2023. 1. 22. 04:09Web/HTTP

클라이언트에서 서버로 데이터 전송

데이터 전달 방식 2가지

- 쿼리 파라미터를 통한 데이터 전송 : GET(주로 정렬 필터)

- 메시지 바디를 통한 데이터 전송 : POST, PUT, PATCH(회원 가입, 상품 주문 등)

 

4가지 상황

정적 데이터 조회

- 이미지, 정적 텍스트 문서

- 조회는 GET 사용

- 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능

 

동적 데이터 조회

- 주로 검색, 게시판 목록에서 정렬 필터(검색어)

- 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용

- 조회는 GET 사용

- GET은 쿼리 파라미터 사용해서 데이터를 전달

 

동적 데이터 : 서버에서 실시간으로 적용 되어지는 데이터

정적 데이터 : 메모리에 데이터를 올려놓은 상태에서 필요할 때마다 데이터를 호출하여 사용하는 데이터

출처 : https://dazbee.tistory.com/46
 

- 웹 서버는 정적인 데이터를 처리하는 기능을 함

- WAS는 동적 데이터를 처리하는 기능을 함

 

HTML Form을 통한 데이터 전송

- POST로는 메시지 바디에 데이터 전송, GETURL에 데이터 전송

- Content-Type : api 요청 시 request에 실어 보내는 데이터의 타입 정보, 클라이언트와 서버간에 약속이 되어있다. 웬만한 웹 서버들은 파싱 해서 쓸 수 있도록 구현되어있음.

※ 파싱 : 데이터를 조립해서 특정한 데이터만을 추출한다는 의미

- GET메서드로 전송 시 메시지 바디가 없으므로 쿼리 파라미터에 넣는다.

- <form> 태그의 enctype 속성은 폼 데이터가 서버로 제출될 때 해당 데이터가 인코딩되는 방법을 명시. method 속성 값이 post인 경우에만 사용 가능.

※ 인코딩 : 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것

 

 

HTTP API를 통한 데이터 전송

- 서버 to 서버(백엔드 시스템 통신)

- 앱 클라이언트

- 웹 클라이언트(AJAX : 웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있음(비동기 식으로 XML을 이용하여 서버와 통신하는 방식))

- POST, PUT, PATCH: 메시지 바디를 통해 데이터 전송
- GET: 조회, 쿼리 파라미터로 데이터 전달
- Content-Type: application/json을 주로 사용 (사실상 표준) 

 

 

HTTP API 설계

ex) 회원 관리 시스템

- POST : 신규 자원 등록

- 클라이언트는 등록될 리소스의 URI를 모른다.

- 서버가 새로 등록된 리소스 URI를 생성해준다.

- 컬렉션 : 서버가 관리하는 리소스 디렉토리. 서버가 리소스의 URI를 생성하고 관리

 

ex) 파일 관리 시스템

- PUT : 신규 자원 등록

- 클라이언트가 리소스 URI를 알고 있어야한다.

- 클라이언트가 직접 리소스의 URI를 지정한다.

- 스토어 : 클라이언트가 관리하는 리소스 저장소, 클라이언트가 리소스의 URI를 알고 관리(게시판 같은 경우 스토어도 종종 사용한다)

 

ex) HTML FORM 사용

 

- GET, POST만 지원.

- 컨트롤 URI : GET, POST만 지원하므로 제약이 있음, 따라서 동사로 된 리소스 경로 사용. HTTP 메서드로 해결하기 애매한 경우 사용

 

 

 

 

* 김영한님의 "모든 개발자를 위한 HTTP 웹 기본 지식" 강의에 바탕하여 작성하였습니다.

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

 

 

'Web > HTTP' 카테고리의 다른 글

HTTP 헤더1-일반 헤더  (0) 2023.01.22
HTTP 상태코드  (0) 2023.01.22
HTTP 메서드  (0) 2023.01.22
HTTP 기본  (0) 2023.01.22
URI와 웹 브라우저 요청 흐름  (0) 2023.01.22