개발

HTTP API 설계하기

Loopy_SEOB 2021. 3. 18. 01:17

클라이언트에서 서버로 데이터 전송할 때 크게 2가지 전달 방식을 사용한다

 

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

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

 

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

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

 

클라이언트에서 서버로 데이터 전송을 하는 4가지 상황

 

정적 데이터 조회

쿼리 파라미터 미사용

이미지나 정적 텍스트 문서를 전달.

조회는 GET METHOD를 사용하지만 단순히 리소스 경로를 사용해 조회가 가능하다.

 

동적 데이터 조회

쿼리 파라미터 사용

서버는 쿼리 파라미터를 기반으로 정렬 필터를 적용해 결과를 동적으로 생성해서 보내준다.

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

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

조회는 GET METHOD를 사용한다, GET은 Query Parameter를 사용해 데이터를 전달하기 때문이다.

 

HTML Form Data 전송

POST 전송 - 저장

GET으로 보내도 받을 수는 있지만 보안적인 측면에서 좋지 않음, POST를 사용하는 것이 원칙.

Multipart/FormData - 저장 (파일 전송)

 

HTML Form Submit시 POST METHOD를 통한 전송

ex) 가입, 주문, 변경

Content-Type: application/x-www-form-urlencoded 사용

form의 내용을 메시지 바디를 통해 전송 (key=value, 쿼리파라미터 형식)

전송 데이터를 url encoding 처리한다.

 

Content-Type: multipart/form-data

파일 업로드 같은 바이너리 데이터 전송 시 사용

다른 종류의 여러 파일과 Form의 내용을 함께 전송 가능

 

HTML Form Submit은 GET, POST만 가능하다.

 

HTTP API DATA 전송

Server to Server

Back-End System 통신

App Client

Iphone, Android 

Web Client

HTML에서 Form 대신 JS를 사용한 통신 (AJAX, http, Axios..)

ex) React, Vue.js 같은 Web Client API 통신

POST, PUT, FATCH : Message Body를 통한 API 통신

GET : 조회, 쿼리 파라미터로 데이터 전달

Content-Type: application/json을 주로 사용한다 사실상 표준임

text, xml, json ....

 

 

HTTP API - Collection

POST 기반 등록

ex) 회원 관리 API 제공

HTTP API - Store

PUT 기반 등록

ex) 정적 컨텐츠 관리, 원격 파일 관리

HTML FORM 사용

웹 페이지 회원 관리