개요
REST API는 자원의 주소를 나타내기 위해 Uniform Resource Identifiers (URIs)
를 사용한다.
규칙을 따르기 전 URI 형식과 관련된 규칙으로 URI형식에 대한 단어 RFC 3986은 일반적인 URI 문법을 정의 하였다.
URI = scheme "://" authority "/" path ["?" query]["#" fragment]
규칙
1. URI에 후행 슬래시(/
)는 포함되지 않는 것이 좋다.
혼란을 줄수 있고 의미가 없는 후행 슬래시를 URI 경로의 마지막에 포함시키지 않는 것은 따라야 할 규칙들 중 가장 중요한 것중 하나이다. REST API는 후행 슬래시를 가지지 않고, Client들에게 제공하는 링크에 후행 슬래시는 포함되지 않는 것이 좋다.
예시
1 - http://api.test.com/notice/
2 - http://api.test.com/notice
이 두 개의 URI는 다른 resource를 가르킨다. resource가 다르면 URI가 다른 것이다. 반대로 URI가 다르면 resource 또한 다른 것이다.
2. 슬래시(/
)는 계층관계를 나타내는데 사용하는 것이 좋다.
슬래시 문자는 URI의 경로 부분에서 resource들 간의 계층 관계를 나타내는데 사용된다.
예시
http://api.test.com/notice/important/1
3. URI의 가독성을 위해 하이픈 (-
)을 사용하는 것이 좋다.
URI를 쉽게 인식, 해석해야 하고 긴 경로 요소 이름의 가독성을 증가 시키기 위해 하이픈을 사용하는 것이 좋다.
4. URI에서 언더바(_
)는 사용하지 않는 것이 좋다.
텍스트 viewer 어플리케이션 (브라우저, 에디터 등등..)에서는 종종 URI에 클릭할 수 있다는 시각적 힌트를 주기 위하여 밑줄을 사용한다. 하지만 어플리케이션의 폰트에 따라 언더바 문자는 밑줄로 인하여 부분적으로 보이지 않거나 완전히 가려질 수 있다.
이러한 혼란을 피하기 위해 언더바(_
) 대신 하이픈(-
)을 사용을 권장한다.
5. URI 경로에서는 소문자를 선호한다.
대문자가 문제를 일으킬 수 있으므로 URI 경로에서는 소문자를 선호하는 것이 편리하다.
RFC 3986은 URI를 scheme 혹은 host component를 제외하고 대소문자를 구분하는 것으로 정의하였다.
예시
1 - http://api.test.com/notice/important/1
2 - HTTP://API.TEST.COM/notice/important/1
3 - http://api.test.com/NOTICE/IMPORTANT/1
위 URI 중 1번과 2번은 같다.
위 URI 중 1, 2번과 3번은 같지 않다.
6. URI에는 파일 확장자가 포함되지 않는 것이 좋다.
웹상에서 마침표(.
) 문자는 URI에서 파일의 이름과 확장자를 구분하는데 흔히 사용된다. 하지만 REST API에서는 메시지들의 객체 body
를 나타내기 위해 URI에 임의의 파일 확장자를 포함하면 좋지 않다. 보안에 안좋다. 대신 body의 내용이 어떻게 흐르는지 결정하는 Content-Type
Headers를 통해 전달되는 media-type
에 의존해야 한다.
예시
1 - http://api.test.com/notice.json
2 - http://api.test.com/notice
파일의 확장자는 format을 나타내기 위해 사용 되면 보안에 약하다.
REST API Client는 HTTP가 제공하는 형식의 선택 메커니즘인 Accpet request
Header를 사용할 수 있다.