카테고리 없음

HTTP(API설계)

hanjae 2022. 7. 5. 17:12

URI의 설계방법

위의 그림과 같이 만들면 안된다

중요한 것은 회원 이라는 리소스(자원)이기 때문에 리소스만 놓고 최대한 컬렉션을 활용해서 만든다

즉 동사,목적어 등 주어를 뺀 것은 적지 않는것이 좋다

 

POST기반 등록 API설계법(회원)

・ 회원목록 /members -> GET

・ 회원등록 /members -> POST

・ 회원조회 /members/{id} -> GET

・ 회원수정 /members/{id} -> PATH, PUT, POST

・ 회원삭제 /members/{id} -> DELETE

 

 

PUT기반 등록 API설계법(파일등록)

・ 파일목록 /files -> GET

・ 파일조회 /files{filename} -> GET

・ 파일등록 /files{filename} -> PUT

・ 파일삭제 /files{filename} -> DELETE

・ 파일 대량 등록 /files -> POST

PUT을 사용할 때 특징

・ 클라이언트가 리소스 URL을 알고있어야 한다

   - 파일등록 /files/{filename} -> PUT  //  회원등록 /members -> POST(POST기반) 

   - PUT /files/star.jpg 와 같이 알고있어야 한다

・ 클라이언트가 직접 리소스의 URL을 지정한다

・ 스토어

 - 클라이언트가 관리하는 리소스 저장소

 - 클라이언트가 리소스의 URL을 알고 관리 

 - 여기서 스토어는 /files

 

※실제 실무에서는 PUT보다는 POST를 쓴다 PUT은 파일등록만 할 때 쓰기도한다

 

 

HTML FORM 사용

  • HTML FORM은 GET, POST만 지원
  • AJAX같은 기술을 사용해서 해결 가능 -> 회원 API참고
  • 여기서는 순수 HTML, HTML FORM이야기
  • GET POST만 지원함으로 제약이 있음

・ 회원 목록 /memvers - > GET

・ 회원 등록 폼 /memvers/news - > GET

・ 회원 등록 /memvers/news , /members - > POST

・ 회원 조회 /memvers/{id} - > GET

・ 회원 수정 폼 /memvers{id}/edit - > GET

・ 회원 수정 /memvers{id}/edit , /members/{id} - > POST

・ 회원 삭제 /memvers/{id}/delete - > POST

 

HTML FORM의 제약

  • HTML FORM은 GET, POST만 지원하기 때문에 PUT PATH등은 지원하지 않는다
    그래서 동사로(/news , /edit , /delete) 된 컨트롤 URI를 사용해 만든다

 

 

참고하면 좋은 URI설계 정리

  • 문서(document)
    - 단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 row)
    - 예) /members/100, /files/star.jpg 
  • 컬렉션(collection)
    - 서버가 관리하는 리소스 디렉터리
    - 서버가 리소스의 URI를 생성하고 관리
    - 예) /members
  • 스토어(store)
    - 클라이언트가 관리하는 자원 저장소
    - 클라이언트가 리소스의 URI를 알고 관리
    -  예) /files
  • 컨트롤러(controller), 컨트롤 URI
    - 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스 실행 
    - 동사를 직접 사용
    - 예) /members/{id}/delete