개발자's Life

[Network] HTTP API 설계 예시 by 김영한님 (Rowen Jobs) 본문

Back-end/Network

[Network] HTTP API 설계 예시 by 김영한님 (Rowen Jobs)

Rowen Jobs 2023. 8. 9. 06:00
728x90
반응형

 



URI 설계 종류

HTTP API - 컬렉션

-> POST 기반 등록 : 회원관리 API 제공

 

HTTP API - 스토어

-> PUT 기반 등록 : 정적 컨텐츠 관리, 원격 파일 관리

 

HTTP API - FORM 사용 (GET, POST 만 지원)

-> 웹 페이지 회원 관리


예제

회원관리시스템  - 컬렉션

API 설계  - POST 기반 등록

리소스는 왠만해서는 변경하지 않고 HTTP 메서드 속성 값으로 진행.

GET : 회원목록 /members 

POST : 회원등록 /members

GET : 회원조회 /members/{id}

PATCH, PUT, POST : 회원수정 /members/{id} : 기존 데이터를 없애고 완전히 덮어버릴 경우에는 PUT 을 사용함. 

DELETE : 회원삭제 /members/{id}

 

클라이언트는 등록될 리소스의 URI 를 모른다. 

서버가 새로 등록된 리소스 URI 를 생성해준다.

 

 

파일 관리 시스템 - 스토어

API 설계 - PUT 기반 등록

GET : 파일 목록 .files 

GET : 파일 조회 /files/{filename}

PUT : 파일 등록 /files/{filename}

DELETE : 파일 삭제 /files/{filename}

POST : 파일 대량 등록 /files 

 

클라이언트가 리소스 URI 를 알고 있어야 한다. 

클라이언트가 직접 리소스의 URI 를 지정한다. 

 

POST , PUT 의 차이 

POST 는 클라이언트가 리소스의 URI 를 보내지 않아도 서버가 알아서 등록한다.

PUT 은 클라이언타가 리소스의 URI 를 보내서 관리가 된다. 

 

HTML FORM 사용

-> GET, POST 만 지원

 

GET : 회원 목록 /members 

GET : 회원 등록 폼 /members/new 

POST : 회원 등록 /members/new or /members 

GET : 회원 조회 /members/{id}

GET : 회원 수정 폼 /members/{id}/edit

POST : 회원 수정 /members/{id}/edit, /members/{id}

POST : 회원 삭제 /members{id}/delete 

컨트롤 URI : /new, /edit, /delete .. 과 같이 HTTP 메서드로 해결하기 해매한 경우 컨트롤 URI 사용.

-> 최대한 URI 로 설계를 하고 정말 안될때 컨트롤 URI 를 사용.

 


정리

HTTP API 컬렉션 : 서버가 리소스 URI 결정

HTTP API 스토어 : 클라이언트가 리소스 URI 결정

HTTP FORM 사용 : 순수 HTML + HTML form 사용 

 

URI 설계 개념 ( https://restfulapi.net/resource-naming/

  • 문서
    • 단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 row)
    • ex) /members/100, /files/space.jpg
  • 컬렉션
    • 서버과 관리하는 리소스 디렉터리
    • 서버가 리소르 URI 를 생성하고 관리
      • ex) /members
  • 스토어
    • 클라이언트가 관리하는 자원 저장소
    • 클라이언트가 리소스의 URI 를 알고 관리
      • ex) files
  • 컨트롤러,컨트롤URI
    • 문서, 컬렉션, 스토어 
    • /members/{id}/delete

 

URI 는 리소스만 하고 액션은 GET, POST, PATCH, PUT, DELETE 만 설계가 되면 제일 최상이지만 실제로 거의 불가능.

 

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술

www.inflearn.com

 

728x90
Comments