HTTP 메서드 활용

강한친구·2022년 4월 7일
0

Server Studies

목록 보기
21/27

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

전달방식은 두가지이다.

쿼리 파라미터를 통한 전송

  • GET
  • 주로 정렬 필터(검색어)

메시지 바디를 통한 데이터 전송

  • POST, PUT, PATCH
  • 회원가입, 상품주문, 리소스 등록, 변경 등에 사용

상황 예시

정적 데이터 조회

클라이언트

GET/리소스 경로 HTTP/1.1
(GET/statics/abc.jpg HTTP/1.1)
Host: localhost:8080

서버 /statics/abc.jpg

HTTP/1.1 200 OK
Content-Type: image/jpeg
Content_length: 34012

이미지코드 

이런식으로 단순하게 요청한 정적 데이터를 반환홰준다.

동적 데이터 조회

  • 쿼리 파라미터 사용
GET/search?q=hellp&hl=ko HTTP/1.1
Host: www.google.com

이런식으로 쿼리 파라미터를 보내면 서버에서 이를 해석해서 그 결과를 찾고 결과를 응답해준다

  • 주로 검색, 게시판 목록에서 정렬 필터(검색어)
  • 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용
  • 조회는 GET을 사용하고 GET은 쿼리파라미터를 통해 데이터를 전달한다.

HTML Form 데이터 전송

POST save

<form action="/save" method="post">
 <input type="text" name="username" />
 <input type="text" name="age" />
 <button type="submit">전송</button>
</form>

이런 form 태그를 post 방식으로 보내는것이다.
이를 보내면 HTTP 메세지는 다음과 같다 .

POST /save HTTP/1.1
HOST : localhost:8080
Content-Type:application/x-www-form-urlencoded

username=kim&age=20

method action 형식을 가진다.
content-type은 거의 쿼리 파라미터와 유사한 형식으로 키벨류를 보낸다.

만약 method를 get으로 쓰면 url경로에 알아서 쿼리형태로 넣는다. 근데 get은 save에 쓰면 안된다.

파일전송 multipart

<form action="/save" method="post" enctype="multipart/form-data">
 <input type="text" name="username" />
 <input type="text" name="age" />
 <input type="file" name="file1" />
 <button type="submit">전송</button>
</form>

enctype를 multipart로 설정하면, 웹 브라우저가 알아서 정보들을 구분해서 여러 파트의 데이터로 나눠서 전송한다.

  • POST 전송은 주로 회원가입, 상품주문, 데이터변경 등
  • Content-Type: application/x-www-form-urlencoded 사용
  • Form은 GET전송도 가능 --> 쿼리 처리함
  • multipart를 쓰면 바이너리 데이터를 보낼 수 있음(파일 동영상 등)
  • Form은 GET, POST만 가능

HTTP API

POST /members HTTP/1.1
Content-Type: application/json
{
 "username": "young",
 "age": 20
}
  • 서버간 통신에서 주로 사용한다.
  • 앱 클라이언트에서 전송할때도 이 방식을 사용하고
  • 웹 클라이언트들과도 이러한 통신으로 많이 한다
  • API 통신에서는 POST, PUT, PATCH 등을 할 수 있다.

0개의 댓글