참고하면 좋은 URI 설계 개념

Bruce Han·2022년 9월 14일
1

HTTP

목록 보기
1/1
post-thumbnail

문서

  • 단일 개념 : 파일 하나, 객체 인스턴스, 데이터베이스 row(행 한 개)
  • 예) /items/77, /files/velog.jpg
  • 폴더에 있는 벨로그 사진 한 개 https://namu.wiki/w/velog

컬렉션

  • 서버가 관리하는 리소스 디렉터리
  • 서버가 리소스의 URI를 생성하고 관리함
  • 리소스 어떤 걸 추가할까🤔에 대해서는 서버가 해줌
  • 이때 클라이언트는 요청만 함
  • 예) /items
  • URI 리소스 생성하는 모습 메트로 골드윈 메이어

스토어

  • 클라이언트가 관리하는 자원 저장소
  • 클라이언트가 리소스의 URI를 알고 관리
  • PUT 메서드를 사용할 때에는 클라이언트가 리소스의 자원을 알고 있어야 함
  • 게시판 같이 수정하면 제목부터 내용까지(머리부터 발끝까지) 수정해야 하는 성격의 서비스에서는 스토어가 사용될 수 있음, 파일 형식도 마찬가지임
  • 예) /files

컨트롤러(controller), 컨트롤 URI

  • 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스 실행
  • HTML FORM 태그에서 주로 사용됨. 수정&삭제 메서드는 사용하기 어렵기 때문
  • 동사를 직접 사용
  • 예) /items/{id}/create
  • 물건을 주문하면, 이 주문에 대한 배송시작은 /orders/{id}/배송시작 이런식으로 작성해야 함. 주문의 물건, 가격, 받는 이 정보, 주문상태 등이 다같이 들어가면 관심사의 분리가 적절치 않다고 볼 수 있기 때문
  • Thymeleaf의 경우, th:field를 사용할 때와 th:value를 사용할 때의 문법이 다름. GET을 위해 th:value를 쓰고, PUT/PATCH/POST를 위해 th:field를 쓴다면, 이때는 컨트롤 URI를 이용해서 추가 프로세스가 필요함 사실 th:value만 쓰면 해결됩니다

내용에 대해 첨언해주신다면 감사드리겠습니다.🙇‍♂️

Reference

profile
만 가지 발차기를 한 번씩 연습하는 사람은 두렵지 않다. 내가 두려워 하는 사람은 한 가지 발차기를 만 번씩 연습하는 사람이다. - Bruce Lee

0개의 댓글