[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/네트워크

[Network] HTTP API 설계 예시

inu 2021. 6. 12. 12:37
반응형

  • 일반적으로 HTTP API는 POST를 기반으로하는 시스템과 PUT으로 하는 시스템으로 나뉜다.
  • 그 외에도 HTML FORM만을 사용하면서 Control URI라고 하는 것을 활용해 여러 작업을 수행할 수도 있다.

HTTP API : POST 기반

  • POST 기반 API의 대표적인 시스템으로는 회원관리 시스템이 있다.
  • 회원 등록을 POST로 진행한다.(물론 회원 수정이나 조회, 삭제 등에는 각각 PATCH, GET, DELETE 메서드가 사용될 수 있다.)
  • EX : POST /members
  • 사용자가 등록하는 리소스의 URI를 모른다는 특징이 있다.
  • 이처럼 POST를 기반으로 하여 클라이언트가 새로 등록될 리소스의 URI를 모르는 시스템을 컬렉션이라고 부른다.

HTTP API : PUT 기반

  • PUT 기반 API의 대표적인 시스템으로는 파일 관리 시스템이 있다.
  • 파일 등록을 PUT으로 진행한다.(물론 파일 조회나 삭제 등에는 각각 GET, DELETE 메서드가 사용될 수 있다. 파일을 대량으로 등록하는 경우 POST를 사용할 수도 있다.)
  • EX : PUT /files/{filename}
  • 사용자가 등록하는 리소스의 URI를 알고 있어야 한다.
  • 이처럼 PUT을 기반으로 하여 클라이언트가 새로 등록될 리소스의 URI를 알아야하는 시스템을 스토어라고 부른다.

HTTP API : HTML FORM 사용

  • HTML FORM은 주로 GET과 POST 메서드만을 지원한다. (AJAX같은 기술을 이용하면 해결할 수 있지만 여기서는 논외로 처리)
  • 따라서 어느정도의 제약이 존재하는데, 이를 Control URI 혹은 Controller라고 하는 동사형태의 URI를 사용해 해결한다.
  • Control URI는 URI에 추가적으로 동사형태의 URI를 지원해 사용자가 GET 혹은 POST 메소드로 요청을 보내더라도 그 이상의 작업을 서버 내부적으로 수행할 수 있도록 처리한다.
  • EX : 회원 삭제 POST /members/{id}/delete / 회원 수정 POST /members/{id}/edit
  • Control URI는 분명 필요하지만 무식하게 사용해선 안되고, 최대한 리소스 중심으로 API를 설계해야 함에 주의
반응형

'💻 CS > 네트워크' 카테고리의 다른 글

[Network] HTTP 일반헤더  (0) 2021.07.06
[Network] HTTP 상태코드  (0) 2021.06.26
[Network] HTTP 메서드 활용  (0) 2021.06.10
[Network] HTTP 메서드 기초  (0) 2021.05.16
[Network] HTTP 프로토콜  (0) 2021.04.09