스프링 입문
스프링 입문 3.3 URI 설계패턴
코딩펭귄
2024. 1. 2. 15:50
URI (Uniform Resource Identifier)
- 인터넷에서 특정자원을 나타내는 주소값
- 해당 값은 유일함 (응답은 달라질 수 있음 - )
- URI의 리소스정보는 변경될 수 있음
URL (Uniform Resoruce Locator) -> URI의 하위개념
- 인터넷상에서의 자원, 특정 파일등이 어디에 위치하는지 식별하는 주소
- URL의 리소스정보는 변경될수 없음 (딱, 정확하게 지정된 위치이기 때문)
URI 설계원칙 (RFC - 3986)
-> 못지킨다고해서 잘못되는건 아님
- 슬래시 구분자 / 는 계층 관계를 나타내는데 사용
- URI 마지막 문자로 / 는(x) 포함하지 않음
- 하이픈 - 은 URI가독성을 높이는데 사용함 ex) webmaster -> web-master
- 밑줄 _ 은 사용하지 않음 ex) web_master(x)
- URI경로에는 소문자가 적합함 ex) /JAVA (x) -> /java (o)
- 파일확장자는 URI에 포함하지 않음 ex) /web-master.jsp (x)
- 프로그래밍언어에 의존적인 확장자 사용하지 않음 ex) /web-master.do (x)
- 구현에 의존적인 경로를 사용하지 않음 ex) /servlet/classes (x)
- 세션ID(특정 사용자의 접속경로)를 포함하지 않음->노출되면 다른사용자의 정보도 요청될 수 있기 때문 ex) /wev-master?session-id=asdf (x)
- 프로그래밍 언어의 Method명을 이용하지 않음 ex) /wev-master?action=intro (x)
- 명사에 단수형보다는 복수형 사용. 컬렉션에대한 표현은 복수로 ex) /classes/java/curriculums/web-master
- 컨트롤러 이름으로는 동사나 동사구 사용 ex)/web-master/re-order
- 경로부분중 변하는부분은 유일한 값(pass-value) 으로 대체함
- CRUD 기능을 나타내는것은 URI에 사용하지 않음 ex) 삭제하고싶을땐 DELETE메소드를 사용해서 서버에 요청한다. URI에 /DELETE 이런식으로 쓰지 X
- URI Query Parameter 디자인 - URI 쿼리 부분으로 컬렉션결과에 대해 필터링할수 있음 ex) /web-master?chapter=2
- URI쿼리는 컬렉션의 결과를 페이지로 구분하여 나타내는데 사용함
- API에 있어 서브도메인은 일관성있게 사용해야함 ex) fastcampus의 api담당하는 서브도메인 : https://api.fastcampus.co.kr | https://api-fastcampus.co.kr
- 클라이언트 개발자 포탈 서브 도메인은 일관성있게 만든다 ex) https://dev.fastcampus.co.kr | https://developer-fastcampus.co.kr -> 현업에서 개발하게되면 사용자들이 쓰는 환경을 개발하기전에, 개발환경에서 미리 개발하고 테스트 하게 됨. 이게 dev가 붙는 용도