2023.07.22 - [Http] - HTTP API, Method(메서드)
앞선 시간에는 HTTP API와 Method에 뭐가 있는지 알아봤다.
이번 시간에는 저번에 말한 메서드에 대해 더 구체적으로 알아보고 어떻게 활용하는지 알아보자.
HTTP Method에 대해서 아래의 순서로 설명하겠다.
- Client → Server 데이터 전송
- HTTP API 설계에 적용
우선, Client에서 Server로 데이터를 전송하는 전달 방식은 크게 두가지이다.
첫번째로는, 쿼리(query) 파라미터를 통한 데이터 전송 [ GET 방식 ]
두번째로는, HTTP에서 메시지 바디를 통한 데이터 전송 [ POST, PUT ... ]
이러한 전달 방식을 활용하여 총 4가지 상황에 적용시킬 수 있다.
- 정적 데이터 조회
- 동적 데이터 조회
- HTML Form을 통한 데이터 전송
- HTTP API를 통한 데이터 전송
이 상황에 맞춰서 전달 방식에 대해서 더 알아보자.
정적 데이터 조회
정적 데이터는 말 그대로 정적인 데이터를 조회할 때의 경우이다.
그렇기 때문에, 이미지나 정적 텍스트 문서등이 예시라고 볼 수 있다.
조회를 할 때는 HTTP Method 중 GET 방식을 사용하고 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회가 가능하다.
동적 데이터 조회
동적 데이터 조회는 동적인 데이터를 조회할 때의 경우이다.
주로 검색, 게시판 목록에서 정렬 필터(검색어) 등의 경우에 사용된다.
조회는 마찬가지로 GET방식을 사용하고 동적인 데이터이기 때문에 쿼리 파라미터를 사용해서 데이터를 전달한다.
쿼리 파라미터 사용 예시 : [ GET /search?q=hello&hl=ko HTTP/1.1 Host:www.google.com ]
HTML Form 데이터 전송
HTML Form에서 submit 시 POST 전송에 사용된다. ( HTML Form은 GET 전송도 가능, 그러나 조회에만 GET 사용 )
Content-Type: application/x-www-form-urlencoded 를 사용한다.
메세지 바디에 데이터가 쿼리 파라미터 형태로 담김
HTTP API 데이터 전송
백엔드 시스템 통신에 사용된다. ( 서버 to 서버 )
POST, PUT, PATCH : 메시지 바디를 통해 데이터 전송
GET : 조회,쿼리 파라미터로 데이터 전달
Content-Type : application/json을 주로 사용
이제 HTTP API 설계를 어떻게 해야할지 예시를 들며 더 자세히 알아보자.
우선, 예시로 들어가기 전에 참고하면 좋은 URI 설계 개념에 대해서 알아보자.
- 문서(document)
- 단일 개념(파일 하나, 객체 인스턴스, 데이터 베이스 row)
- ex) /members/100, /files/star.jpg
- 컬렉션(collection)
- 서버가 관리하는 리소스 디렉터리
- 서버가 리소스의 URI를 생성하고 관리
- ex) /members
- 스토어(store)
- 클라이언트가 관리하는 자원 저장소
- 클라이언트가 리소스의 URI를 알고 관리
- ex) /files
- 컨트롤러(controller), 컨트롤 URI
- 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스 실행
- 동사를 직접 사용
- ex) /members/{id}/delete
HTTP API 설계 예시
- HTTP API - 컬렉션(collection)
- POST 기반 등록
- ex) 회원 관리 API 제공
- HTTP API - 스토어(store)
- PUT 기반 등록
- ex) 정적 컨텐츠 관리, 원격 파일 관리
- HTTP FORM 사용
- 웹 페이지 회원 관리
- GET,POST만 지원 → 제약 있음
정리
클라이언트가 서버로 데이터를 전달하는 방식은 GET 방식에서 사용되는 쿼리 파라미터를 사용하는 방식, POST방식에서 사용되는 메시지 바디에 데이터를 담는 방식이 있다.
후자의 경우에는 json 의 형태로 전달하고 이 경우에 Content-Type은 application/json 이 사용된다. ( HTTP API 내에서 )
그리고 HTML FORM 을 사용할 시에는 POST 방식으로 Content-Type이 application/x-www-form-urlencoded 가 사용된다.
HTTP API - collection 은 POST 기반 등록 방식이고 서버가 리소스의 URI를 결정한다. ( 서버가 관리 )
HTTP API - store 은 PUT 기반 등록 방식이고 클라이언트가 리소스의 URI를 결정한다. ( 클라이언트가 관리 )
HTML FORM 사용 시에는 순수 HTML + HTML Form을 사용하고 GET, POST 만 지원한다.
이 두가지만 지원하기에 제약이 생기는데 이 제약을 해결하기 위해 컨트롤 URI 를 사용한다. ( 동사 형태의 리소스 경로 )
'Http' 카테고리의 다른 글
HTTP Header(헤더)- 캐시, 조건부 요청 (2) | 2023.07.31 |
---|---|
HTTP Header(헤더)의 구조, 쿠키 (0) | 2023.07.28 |
HTTP Status Code(상태 코드) (0) | 2023.07.26 |
HTTP API, Method(메서드) (0) | 2023.07.22 |
HTTP (0) | 2023.06.23 |