복습을 위한

HTTP 메서드 활용 본문

http

HTTP 메서드 활용

ho042479 2024. 1. 4. 20:03

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

(데이터 전달 방식은 크게 2가지로 나눌 수 있다.)

 

쿼리 파라미터를 통한 데이터 전송

  • GET

 

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

 

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

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

 

 

 

 

 


클라이언트에서 서버로 데이터를 전송하는 상황은 네가지로 나뉜다.

먼저 정적데이터조회를 살펴보자 이미지나 정적 텍스트 문서가 해당된다.

 

GET으로 URI경로를 보내면 서버에서 받아서 그 해당경로로 약속되어있는 리소스를 클라이언트에게 내려준다. 추가적인 쿼리데이터나 파라미터가 필요없다.

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

• 조회는 GET 사용

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

 

 


 

 

다음으로 동적데이터를 살펴보자 주로 검색이나 목록에서 정렬필터를 활용할 때 사용한다. (검색어)

쿼리 파라미터로 추가적인 조건(데이터) 서버로 요청 원하는 정보를 가져올 수 있다. 서버에서는 받은 쿼리파라미터를 키값으로 활용해 로직을 거쳐 그에 맞는 응답을 하게된다.

 

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

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

• 조회는 GET 사용

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

 


 

세번째로 HTML FORM을 통한 데이터 전송하는 것을 알아보자

username이 kim    age는 20이라는 것을 전송하고싶다. 그러면 클라이언트 측에서 해당 형식에 맞는 폼을 만든다.  그럼 웹브라우저가 폼의 데이터를 읽어서 그것에 맞게 http메세지를 생성해준다. 쿼리파라미터랑 유사하다. 키값스타일로 만들고 그것을 HTTP바디에 넣어준다. 그리고 서버로 전송되는 것이다.

 

HTML FORM으로 데이터전송할 때 사실 GET도 가능하다. GET으로 바꿔 전송버튼을 누르면 브라우저가 알아서 GET메소드로 바꾸고 쿼리 파라미터에 넣어버린다. (GET은 메세지 바디 안쓰니깐) 이렇게 해서 서버에 전달한다. URL에 직접쳐도 되지만 폼데이터에 입력해도 웹브라우저가 POST면 메세지바디에, GET이면 URL경로에 쿼리를 넣는다.

 

당연히 GET은 조회에서만 사용한다. 리소스변경 발생하는 곳에 사용하면안된다.

 

 

  파일같은 것을 전송할 때 사용하는 CONTENT TYPE은 multipart/form-data이다.  바이트로 되어있는 파일까지 같이 전송해야되기 때문이다. multipart/form-data 타입을 사용하면 따로따로 멀티 파트로 나눠서 웹브라우져가 알아서 메세지를 생성해준다. 여러종류의 파일과 폼의 내용을 함께 전송가능한 것이다.

 

사용 예시: 회원가입 폼, 검색 폼 등


 

 

이제 api데이터를 전송할 때를 알아보자

주로 애플리케이션 간 데이터 교환 또는 외부 서비스와의 통합을 위한 목적으로 사용된다 . json형식에 맞게 직접 다 만들어서 전송하는 것이다.

서버와 서버끼리 통신할 때 사용한다.

 

사용 예시: 외부 서비스와의 통합, 데이터베이스 업데이트, 자동화된 작업 등

 

 

 


HTML Form을 사용할 때:

  • 사용자와의 상호작용이 필요한 웹 페이지에서 사용자 입력을 서버로 전송할 때.
  • 사용자에게 입력 폼을 제공하고, 사용자가 폼을 작성하고 제출할 때 사용.

HTTP API를 사용할 때:

  • 애플리케이션 간 데이터 교환이나 서비스 통합이 필요한 경우.
  • 외부 서비스와의 통신이나 데이터베이스 업데이트 등 자동화된 작업에 사용.

 예를 들어, 웹 페이지에서 사용자 입력을 받아 서버에 전송하는 데는 HTML Form을 사용하고, 서버에서 외부 API와 통신하여 추가 데이터를 가져오거나 업데이트해야 할 때는 HTTP API를 사용할 수 있다.

 

 

참고

https://www.inflearn.com/course/lecture?courseSlug=http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&unitId=61368

'http' 카테고리의 다른 글

HTTP API 설계 예시  (1) 2024.01.04
HTTP 메서드의 속성  (0) 2023.11.17
PUT,PATCH,DELETE  (0) 2023.11.17
GET, POST  (0) 2023.11.17
좋은 URI설계란  (0) 2023.11.17