편안하고 꽤 URL 설계 구조에 따라 자원을 표시에 관한 것입니다 (디렉토리 같은 구조, 날짜 : 기사 / 5분의 2,005 / 13 객체와 그것의 속성은, ..), 슬래시는 /
계층 구조를 나타냅니다의를 사용하는 -id
대신.
계층 적 구조
나는 개인적으로 선호합니다 :
/garage-id/cars/car-id
/cars/car-id #for cars not in garages
사용자가 /car-id
부품을 제거하면 cars
직관적으로 미리보기가 표시됩니다. 사용자는 자신이 나무의 어디에 있는지, 무엇을보고 있는지 정확하게 알고 있습니다. 그는 첫 번째 모습에서 차고와 자동차가 관련되어 있음을 알고 있습니다. /car-id
또한 서로 달리 속함을 나타냅니다 /car/id
.
수색
검색어는 그대로입니다 . 선호하는 항목 만 있습니다. 재미있는 부분은 검색에 참여할 때 나타납니다 (아래 참조).
/cars?color=blue;type=sedan #most prefered by me
/cars;color-blue+doors-4+type-sedan #looks good when using car-id
/cars?color=blue&doors=4&type=sedan #I don't recommend using &*
또는 기본적으로 위에서 설명한대로 슬래시가 아닌 모든 것.
공식 : /cars[?;]color[=-:]blue[,;+&]
, * &
는 처음에는 텍스트에서 인식 할 수 없으므로 기호를 사용하지 않습니다 .
** URI에서 JSON 객체를 전달하는 것이 RESTful이라는 것을 알고 있습니까? **
옵션 목록
/cars?color=black,blue,red;doors=3,5;type=sedan #most prefered by me
/cars?color:black:blue:red;doors:3:5;type:sedan
/cars?color(black,blue,red);doors(3,5);type(sedan) #does not look bad at all
/cars?color:(black,blue,red);doors:(3,5);type:sedan #little difference
가능한 기능?
검색 문자열 부정 (!)
모든 차량을 검색하지만 검은 색 과 빨간색은 검색하지 않습니다 .
?color=!black,!red
color:(!black,!red)
가입 검색
검색 빨간색 또는 파란색 또는 검은 색 으로 자동차 3 차고 아이디에 문을 1..20 또는 101..103 또는 999 만 하지 5
/garage[id=1-20,101-103,999,!5]/cars[color=red,blue,black;doors=3]
그런 다음 더 복잡한 검색 쿼리를 구성 할 수 있습니다. ( 하위 문자열 일치 에 대한 아이디어는 CSS3 속성 일치 를 보십시오 . 예를 들어 "bar"를 포함하는 사용자 검색 user*=bar
)
결론
그냥 마음에 계속, 결국처럼 그러나 당신이 그것을 할 수 있기 때문에 어쨌든, 이것은 당신을위한 가장 중요한 부분이 될 수있는 편안하고 URI 쉽게 예를 들어, 디렉토리와 같은 이해할 수있는 구조를 나타내며 /directory/file
, /collection/node/item
날짜가 /articles/{year}/{month}/{day}
.. 그리고 당신은 생략하는 경우를 마지막 세그먼트 중 하나라도 즉시 얻을 수 있습니다.
따라서이 모든 문자는 인코딩되지 않은 상태 로 허용됩니다 .
RFC 3986 2.2 참조
내가 이전에 말한에도 불구하고, 여기에 몇 가지가 있다는 것을 의미, 분리 문자의 일반적인 구분이다 "입니다" 다른 사람보다 더 중요합니다.
- 일반 삼각근 :
:/?#[]@
- 서브 델리 미터 :
!$&'()*+,;=
더 읽기 :
계층 구조 : 2.3를 참조 , 1.2.3 참조
URL 경로 매개 변수 구문
CSS3 속성 일치
IBM을 : RESTful 웹 서비스 - 기본 사항
참고 : RFC 1738, RFC 3986에 의해 업데이트 된
/cars
과/car
의미 론적 때문에 나쁜 생각이 아니다. 해당 범주에 둘 이상의 항목이있을 때는 항상 복수형을 사용하십시오.