본문 바로가기

코딩/네트워크

[HTTP] 클라이언트에서 서버로 데이터 전송하기

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

두 가지 전달 방식

1. 쿼리 파라미터를 통한 데이터 전송   (정적, 동적 데이터 조회)

  - 주로 정렬 필터 (검색어)

2. 메시지 바디를 통한 데이터 전송    (HTML Form, HTTP API)

  - 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 등,,

 

1. 정적 데이터 조회

정적 데이터는 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 --> 리소스 경로를 서버로 전달

 

2. 동적 데이터 조회

쿼리 파라미터를 통해 정렬 필터해 결과를 동적으로 조회 --> 쿼리로 필터링 데이터를 서버로 전달

 

3. HTML Form 데이터 전송

POST 메서드를 사용한 경우 (등록)

HTML Form 에 따라 웹 브라우저가 HTTP 요청 메세지를 생성한다

   - application/x-www-form-urlencoded : form 데이터를 쿼리 형태(key = value)로 메세지를 바디에 생성해 전송.

   - multipart/form-data : form 데이터를 HTTP 메세지 바디에서 -----XXX 로 구분해 메세지 생성. 파일 업로드 같은 바이너리 데이터 전송 시 사용.

 

GET 메서드를 사용한 경우(조회)

form 데이터를 쿼리에 넣어 메세지를 만든다!

 

4. HTTP API 데이터 전송

서버끼리 통신할 때!

Content-Type: application/json 을 주로 사용

HTTP 메세지를 직접 생성해서 전송?

 

**POST 기반 등록

클라이언트에서 등록될 리소스의 URI를 모르는 경우

Collection (컬렉션) : 서버가 관리하는 리소스 디렉토리

서버가 리소스의 URI를 생성하고 관리!

ex) 멤버를 등록하는 경우

/members 로 요청하면 서버에서 /members/123 으로 등록.

이때 /members 가 컬렉션이다!

 

**PUT기반 등록

클라이언트가 등록될 리소스의 URI를 아는 경우

Store(스토어): 클라이언트가 관리하는 리소스 저장소

클라이언트가 리소스의 URI를 알고 관리

ex) 파일을 등록하는 경우

PUT /files/star.jpg 로 요청해 파일을 등록

이때 /files 가 스토어이다!

 

**HTML form 사용하는 등록

HTML form 은 GET, POST 메서드만 사용 가능함

이런 경우 리소스 + GET, POST 만으로 설계하기 불가능 --> 동사로 된 리소스 경로 사용!

ex) members/{id}/delete -> POST

 

 

'코딩 > 네트워크' 카테고리의 다른 글

[HTTP] HTTP 헤더  (0) 2023.05.28
[HTTP] 쿠키 & 캐시  (0) 2023.05.27
[HTTP] 상태 코드  (0) 2023.05.26
[HTTP] HTTP 메세지 & API URI 설계 방법  (0) 2023.05.24
[HTTP] 인터넷 통신의 원리 및 방법 (TCP/IP, Port, HTTP, URI)  (1) 2023.05.20