DevGang
[WEB] URI 본문
- URI (Uniform Resource Identifier)
- 인터넷에서 특정 자원을 나타내는 주소 값. 해당 값은 유일합니다.
- ex : https://www.foo.co.kr/resource/sample/1
- response : sample1.pdf, smaple2.pdf, smaple.doc
- URL (Uniform Resource Locator)
- 인터넷 상에서의 자원, 특정 파일이 어디에 위치하는지 식별하는 주소
- ex : https://www.foo.co.kr/sample1.pdf
- URL는 URI의 하위 개념
- URI 설계 원칙 (RFC-3986)
1. 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용한다.
- https://foo.co.kr/vehicles/suv/q6
2. URI 마지막 문자로 ( / )는 포함하지 않는다.
- https://foo.co.kr/vehicles/suv/q6/
3. 하이폰(-)은 URI가독성을 높이는 데 사용한다.
- https://foo.co.kr/vehicles/suv/q-series/6
4. 밑줄(_)은 사용하지 않는다.
- https://foo.co.kr/vehicles/suv/q_series/6
5. URI 경로에는 소문자가 적합하다.
- https://foo.co.kr/vehicles/suv/q6 (O)
- https://Foo.co.kr/Vehicles/SUV/Q6 (X)
6. 파일 확장자는 URI에 포함하지 않는다.
- https://foo.co.kr/vehicles/suv/q6.jsp
7. 프로그래밍 언어에 의존적인 확장자를 사용하지 않는다.
- https://foo.co.kr/vehicles/suv/q6.do
8. 구현에 의존적인 경로를 사용하지 않는다.
- https://foo.co.kr/servlet/vehicles/suv/q6
9. 세션 ID를 포함하지 않는다.
- https://foo.co.kr/vehicles/suv/q6?session-id=abcdef
10. 프로그래밍 언어의 Method명을 이용하지 않는다.
- https://foo.co.kr/vehicles/suv/q6?action=intro
11. 명사에 단수형 보다는 복수형을 사용해야 한다. 컬랙션에 대한 표현은 복수로 사용
- https://foo.co.kr/vehicles/suv/q6
12. 컨트롤러 이름으로는 동사나 동사구를 사용한다.
- https://foo.co.kr/vehicles/suv/q6/re-order
13. 경로 부분 중 변하는 부분은 유일한 값으로 대체한다.
- https://foo.co.kr/vehicles/suv/q6/{car-id}/users/{user-id}/release
- https://foo.co.kr/vehicles/suv/q6/117/users/steve/release
14. CRUD 기능을 나타내는 것은 URI에 사용하지 않는다.
- GET : https://foo.co.kr/vehicles/q7/delete/{car-id} (X)
- DELETE : https://foo.co.kr/vehicles/q7/{car-id} (O)
15. URI Query Parameter 디자인
1) URI 쿼리 부분으로 컬렉션 결과에 대해서 필터링할 수 있다.
- https://foo.co.kr/vehicles/suv?model=q7
2) URI 쿼리는 컬랙션의 결과를 페이지로 구분하여 나타나는 데 사용한다.
- https://foo.co.kr/vehicles/suv?page=0&size=10&sort=asc
16. API에 있어서 서브 도메인은 일관성 있게 사용해야 한다.
- https://foo.co.kr
- https://api.foo.co.kr
17. 클라이언트 개발자 포탈 서브 도메인은 일관성 있게 만든다.
- https://dev-api.foo.co.kr
- https://developer-api.foo.co.kr
'Study > WEB' 카테고리의 다른 글
[WEB] WS(Web Server) vs WAS(Web Application Server) (0) | 2021.07.14 |
---|---|
[WEB] HTTP (0) | 2021.06.08 |
[WEB] SOAP(Simple Object Access Protocol) (0) | 2021.06.01 |
[WEB] XML, JSON (0) | 2021.04.11 |
[WEB] REST (0) | 2021.02.17 |
Comments