클라이언트에서 서버로 데이터 전송
1. `쿼리 파라미터`
- GET 요청에서 주로 사용
- 검색, 필터링, 정렬과 같은 조회용 데이터를 서버에 보낼 때 적합
- URL 길이 제한으로 대량의 데이터 전송하기 어려움
- 보안상 데이터 노출 위험
2. `메시지 바디`
- POST / PUT / PATCH / DELETE 요청에서 사용
- 리소스 생성, 수정, 삭제 등에 사용
- API 요청에서 JSON 형식을 사용하는 경우가 많음
- 대량의 데이터를 효율적으로 전송할 수 있으며, 보안성도 높음
상황별 데이터 전송 방식
1. `정적 데이터 조회` : 이미지, 정적 문서 단순 조회
> `GET` (쿼리 파라미터 X)
GET /static/star.jpg HTTP/1.1
2. `동적 데이터 조회` : 검색, 필터링, 정렬 시 사용
> `GET + 쿼리 파라미터`
GET /search?1=hello&hl=ko HTTP/1.1
3. `HTML Form 데이터 전송` : 회원 가입, 상품 주문, 데이터 변경
: GET 전송
> 입력 데이터가 쿼리 파라미터 형식으로 변환되어 URL 에 포함
> `GET + 쿼리 파라미터`
GET /members?username=kim&age=20 HTTP/1.1
: POST 전송
> 메시지 바디에 데이터를 포함하여 전송
> `application/x-www-form-urlencoded` 사용 (URL 인코딩)
POST /save HTTP/1.1
Content-Type: application/x-www-form-urlencoded
username=kim&age=20
: 파일 전송
> 바이너리 데이터 전송시 사용
> 다른 종류의 여러 파일과 폼 내용을 함께 전송 가능
> `multipart/form-data` 사용
POST /save HTTP/1.1
Content-Type: multipart/form-data; boundary=----XXX
----XXX
Content-Disposition: form-data; name="username"
kim
----XXX
Content-Disposition: form-data; name="age"
20
----XXX
Content-Disposition: form-data; name="file1"; filename="image.png"
Content-Type: image/png
4. HTTP API 를 통한 데이터 : 회원 가입, 상품 주문, 데이터 변경
> 백엔드 서버 간 통신이나 웹/모바일 앱에서 서버로 데이터를 보낼 때 사용
> GET : 쿼리 파리미터 사용
> POST, PUT, PATCH, DELETE : 메시지 바디 사용하며, 주로 `application/json` 사용
POST /members HTTP/1.1
Content-Type: application/json
{
"username": "young",
"age": 20
}
> 참고 <
- HTML Form 전송은 GET, POST 만 지원 (PUT, PATCH, DELETE 는 AJAX, Fetch API 사용)
참고하면 좋은 URI 설계 개념
문서(Document)
- 단일 개념 (파일 하나, 객체 인스턴스, 데이터베이스 row)
- `GET /members/100` 라면 /members/100 이 단일 문서를 의미
컬렉션(Collection)
- 서버가 관리하는 리소스 디렉토리
- 서버가 리소스 URI 생성하고 관리
- 클라이언트는 `POST` 를 통해 리소스를 등록할 뿐, URI 를 직접 지정하지 않음
- `POST /members` 라면 /members 가 컬렉션을 의미
스토어(Store)
- 클라이언트가 관리하는 리소스 저장소
- 클라이언트가 리소스의 URI 를 알고 직접 관리
- 클라이언트는 `PUT` 을 통해 특정 URI 에 리소스를 저장
- `PUT /files/star.jpg` 라면 /files 가 스토어를 의미
컨트롤 URI
- HTML FORM 에서 GET/POST 만 지원하므로 제약이 발생할 때
- 동사로 된 리소스 경로를 사용하여 해결
- HTTP 메서드로 해결하기 애매한 경우 사용 (HTTP API 포함)
- 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스를 실행
예시
회원 목록 : `GET /members`
회원 등록 폼 : `GET /members/new`
회원 등록 : `POST /members/new`
회원 조회 : `GET /members/{id}`
회원 수정 폼 : `GET /members/{id}/edit`
회원 수정 : `POST /members/{id}/edit`
회원 삭제 : `POST /members/{id}/delete`
> 여기서 `/new`, `/edit`, `/delete` 가 컨트롤 URI 이다.
출처 | HTTP 웹 기본 지식(김영한) - 인프런
'💠기타 > 컴퓨터 과학 (CS)' 카테고리의 다른 글
[HTTP] HTTP 헤더는 어떠한 것들이 있을까? (0) | 2025.03.04 |
---|---|
[HTTP] 상태 코드 특징과 리다이렉션(PRG)에 대하여 (0) | 2025.03.04 |
[HTTP] 무상태 프로토콜, HTTP 메시지 구조, HTTP 메서드에 대하여 ! (0) | 2025.03.03 |
[컴파일러] Tokenizer, Lexer, Parser에 대해 알아보자 (0) | 2024.09.02 |
[컴파일러] 컴파일러의 구조 (0) | 2024.09.02 |