Skip to content

Latest commit

 

History

History
43 lines (38 loc) · 2.58 KB

File metadata and controls

43 lines (38 loc) · 2.58 KB

URI 설계 패턴

URI (Unoform Resource Identifier)

인터넷에서 특정 자원을 나타내는 주소 값, 해당값은 유일하다. ( 응답은 달라질 수 있다. )

  • 예시 )
  • 요청 : https://www.fastcampus.co.kr/resource/sample/1
  • 응답 : fastcampus.pdf, fastcapmus.docx (다양한 형태로 여러 정보들이 올 수 있는 형태)

URL (Uniform Resource Locator)

인터넷 상에서의 자원, 특정 파일이 어디에 위치하는지 식별하는 주소

  • 요청 : https://www.fastcampus.co.kr/fastcampus.pdf
  • url 주소 자체가 특정 서버, 특정 컴퓨터의 특정 폴더에 특정 파일이다. 즉 특정 위치를 나타내는 것이다.
  • URI는 resource 정보가 변경될 수 있지만 URL은 특정 위치이기 때문에 변결될 수 없다.
  • 따라서 URL은 URI의 하위 개념이다.

URI의 설계원칙 ( RFC-3987 )

  • 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용한다.
  • URI 마지막 문자로(/)는 포함하지 않는다.
  • 하이픈(-)은 URI 가독성을 높이는데 사용한다.
  • 밑줄(_)은 사용하지 않는다.
  • URI 경로에는 소문자가 적합하다.
  • @파일 확장자는 URI에 포함하지 않는다.
  • @프로그래밍 언어에 의존적인 확장자를 사용하지 않는다.
  • @구현에 의존적인 경로를 사용하지 않는다.
  • @들을 사용하지 않는 이유는 URI에 파일 확장자를 추가할 때 해당 파일 특정 버전에 보안취약점이 생길 경우, 특정 언어에 문제가 있을 경우, 특정 구현에 필요한 프레임워크에 문제가 있을 경우 취약점이 되므로 외부에 노출하지 않는다.
  • 세션 ID를 포함하지 않는다.
  • 프로그래밍 언어의 Method명을 이용하지 않는다.
  • 명사에 단수형보다는 복수형을 사용해야한다. 특히 컬렉션에 대한 표현은 복수로 사용
  • 컨트롤러 이름으로는 동사나 동사구를 사용한다.
  • 경로 부분 중 변하는 부분은 유일한 값(Path Valiable)으로 대체한다.
  • CRUD 기능을 나타내는 것은 URI에 사용하지 않는다.
  • URI Query Parameter 디자인
    • URI 쿼리 부분으로 컬렉션 결과에 대해서 필터링 할 수 있다.
    • 예시 ) ..../curriculums/web-master?chapter=2
  • URI 쿼리는 컬렉션의 결과를 페이지로 구분하여 나타내는데 사용한다.
    • 예시 ) .../curriculums/web-master?chapter=2&page=0&size=10&sort=asc
  • API에 있어서 서브 도메인은 일관성 있게 사용해야 한다.
  • 클라이언트 개발자 포탈 서브 도메인은 일관성 있게 만든다.