1. 클라이언트에서 서버로 데이터 전송
- 쿼리 파라미터를 통한 데이터 전송
- 메시지 바디를 통한 데이터 전송
1) 쿼리 파라미터를 통한 데이터 전송
- GET
- 주로, 정렬 필터에서 사용한다.
2) 메시지 바디를 통한 데이터 전송
- POST, PUT, PATCH
- 회원 가입, 상품 주문, 새로운 리소스 등록, 리소스 변경
2. 클라이언트 -> 서버 데이터 전송/ 4가지 상황 예시
- 정적 데이터 조회 (이미지, 정적 텍스트 문서)
- 동적 데이터 조회 ( 주로 검색, 게시판 목록에서 정렬 필터 혹은 검색어 조회)
- HTML Form을 통한 데이터 전송
- HTTP API를 통한 데이터 전송
1) 정적 데이터 조회
✔️ 메서드
GET
✔️ 설명
GET은 서버의 데이터를 변경하지 않으므로 안전하고 멱등하다.
✔️ 예시
사용자가 웹 브라우저에 URL을 입력하여 웹사이트의 로고 이미지(logo.png)를 요청하는 경우, 서버는 해당 이미지 파일을 클라이언트로 전송한다.
GET /images/logo.png HTTP/1.1
Host: example.com
2) 동적 데이터 조회
✔️ 메서드
GET
✔️ 설명
서버에 동적으로 생성 또는 처리해야 하는 정보(검색 결과, 게시판 목록)를 요청할 때 사용한다.
파라미터를 URL에 포함시켜 필터, 정렬, 검색어등을 서버에 요청한다.
✔️ 예시
사용자가 웹 사이트에서 게시판의 글을 "최신순"으로 정렬하여 조회 요청을 하는 경우, 서버는 요청된 정렬 방식으로 데이터를 처리하여 결과를 반환한다.
GET /board?sort=date&order=desc HTTP/1.1
Host: example.com
3) HTML Form을 통한 데이터 전송
✔️ 메서드
GET, POST
✔️ 설명
HTML 폼을 통해 사용자가 입력한 데이터를 서버로 전송할 때 사용한다.
POST 메서드는 서버의 상태를 변경할 수 있다.
✔️ 예시
사용자가 회원 가입 폼에 정보를 입력하고 제출 버튼을 클릭하면, 입력된 데이터는 POST 요청을 통해 서버로 전송되어 사용자 등록 처리가 이루어진다.
POST /signup HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
username=john&password=1234
4) HTTP API를 통한 데이터 전송
✔️ 메서드
POST, PUT, PATCH, DELETE
✔️ 설명
웹 API를 통해 데이터를 생성(POST), 수정(PUT / PATCH), 삭제(DELETE)를 할 때 사용한다.
이 메서드들 대부분 서버의 상태를 변경한다.
✔️ 예시
REST API를 통해 새로운 주문을 생성하는 경우, POST 메서드를 사용하여 주문 데이터를 서버에 전송한다.
POST /api/orders HTTP/1.1
Host: example.com
Content-Type: application/json
{"product_id": "123", "quantity": "2"}
⭐multipart/form-data
파일 업로드 같은 바이너리 데이터를 폼으로 전달하려면 enctype속성을 'multipart/form-data'로 설정해야한다.
3. HTTP API 설계 예시
1) 회원 목록 조회
- URL : /members
- 메서드 : GET
- 응답 예시
[
{"id": 1, "name": "John Doe", "email": "john@example.com"},
{"id": 2, "name": "Jane Doe", "email": "jane@example.com"}
]
2) 특정 회원 조회
- URL : /members/{id}
- 메서드 : GET
- 응답 예시
{"id": 1, "name": "John Doe", "email": "john@example.com"}
3) 새로운 회원 등록
- URL : /members
- 메서드 : POST
- 요청 본문
{"name": "Alice Smith", "email": "alice@example.com"}
- 응답 예시
{"id": 3, "name": "Alice Smith", "email": "alice@example.com"}
4) 회원 정보 전체 수정
- URL : /users/{id}
- 메서드 : PUT
- 요청 본문
{"name": "Alice Johnson", "email": "alicej@example.com"}
- 응답 예시
{"id": 3, "name": "Alice Johnson", "email": "alicej@example.com"}
5) 회원 정보 부분 수정
- URL : /users/{id}
- 메서드 : PATCH
- 요청 본문
{"email": "alice_new@example.com"}
- 응답 예시
{"id": 3, "name": "Alice Johnson", "email": "alice_new@example.com"}
6) 회원 삭제
- URL : users/{id}
- 메서드 : DELETE
- 응답 : 상태코드 '204 No Content' (성공적으로 처리되었으나 응답할 콘텐츠가 없음.)
🤔회원 탈퇴 시, DELETE로 데이터를 완전히 제거할 지, 데이터를 DB에 보관하되 안보이게 처리할 지는 애플리케이션 요구사항, 법적 요구 사항 등에 따라 달라질 수 있다.
'인프런 김영한 강의 정리 > 모든 개발자를 위한 HTTP 웹 기본 지식' 카테고리의 다른 글
HTTP - 헤더(1) (0) | 2024.05.15 |
---|---|
HTTP - HTTP 상태코드 (0) | 2024.05.10 |
HTTP - HTTP 메서드의 속성 (0) | 2024.05.10 |
HTTP - HTTP 메서드 (0) | 2024.05.10 |
HTTP - HTTP 특징 (0) | 2024.05.10 |