2010-02-05 2 views
1

'좋은 REST'URI를 정의하는 데 익숙하지 않습니다. 이 시나리오는 판매용 제품이있는 기존 사이트입니다. 계층 구조를 드릴 다운하는 여러보기에서 데이터를 볼 수 있지만 기본적으로 cat1/cat/ products 또는 cat 2/cat3/products 또는 범주 1 - 4의 조합으로 이루어집니다. 다른 제품보기는 검색을 기반으로합니다.REST URI 정의

어떻게 URI를 구성합니까?

products/cat1/cat4 

사실도 아마

products/cat4/cat1 

같은 페이지 (인가 : -

products/?????? 

답변

0

네 문제는 여기 때문에 자원에 대한 고유 ID를 필요가 없다는 것입니다 모든 것을보기 CAT1 및 CAT4, 또는 CAT1 및 CAT4에서 모든 일치)

당신의 범주 만약 태그 곳 조직 예를 들어, "cat6"은 "cat1"의 하위 항목이라는 것을 알고 계십니다.

그래서 두 가지 옵션이

1) 범주

또는

2) 가지고에 대한 자연 순서를 적용 될 두 개의 서로 다른 URI의 본질적 301 permanant 리디렉션과 동일한 자원 (를 가리키는 원하는 리소스로 이동).

+0

감사 Sohnee가,이 경우 상부 고양이 언어, 두 번째 캔입니다 변경, 등등 .. 예를 들어, ../ 프랑스어/독립/기본// 독일어/보조 학습/성인, 다른 방법은 독일어/성인 수 있습니다. uri 구조가 너무 동적으로 필요합니까? 나에게 그것은 검색과 매우 유사하지만 계층이없는 4 가지 용어로 - 적합하지 않은 것으로 보인다. – Craig

+0

너무 역동적이라고 생각하지 않습니다. 나는 당신이 명확한 no-no가되는 것에 반대되는 문제가 있다고 생각합니다. 즉 URI와 두 개의 리소스가있는 경우 작동하지 않을 수도 있지만 유사한 리소스를 가리키는 두 개의 URI는 패턴이 아닙니다. – Fenton

+1

표현과 함께 200 OK를 반환하는 하나의 URI 만 있어야합니다. 다른 URI는 302 See Other를 반환 할 수 있습니다. –

1

당신은 당신의 URI에 쿼리 문자열을 사용하여 사용할 수 있습니다

/products?categories=german,adult,foo,bar 

서버 측 카테고리의 알파벳 순서 위의 URI에 이렇게 요청과 같은 몇 가지 논리를 적용 할 수있는 여러 URI를 방지하기 위해 것 당신이 대안처럼 할 수 - 당신이 어떤 HTML 양식에서 쿼리를 생성하기 위해 자바 스크립트를 사용해야합니다 브라우저에서 작동하는 그 위의 쿼리 부분의 패턴

/products?categories=adult,bar,foo,german 

: 실제로 응답 영구적으로 이전 301를 통해 리디렉션 이걸 피하려고한다면 모자 특정 문제 : REST 아키텍처의 원칙을 다음 사이트를 설계 데

/products?cat1=adult&cat2=bar&cat3=foo&cat4=german 
+0

mi는 내 자연스러운 접근 방식이다. 그것은 끄트머리는 검색도 제품? CAT1 = 성인 및 CAT2 = 바 & CAT3 = foo는 & CAT4 = 독일어 제품? CAT2 = 바 & CAT3 = foo는 & CAT4 = 독일어 제품에 맞는? 검색 = 독일어 책 나는이 목록을 찾기 위해 나에게 매개 변수를 제공합니다 알고 돌아올 제품. 이 질문에 유감이지만 걱정스러운 점은 더 계층적인 URL 샘플/제품/cat1/{cat1}/...에서 누락되었습니다. – Craig

+0

그것은 중요하지 않습니다. URI가있는 한 – Mike

+0

URI를 리다이렉트 (redirect)하여 '더 나은'쿼리 문자열을 사용하는 아이디어는 나에게 불필요한 것처럼 보입니다. 서버 측에서는이 '범주'모음을 읽고 그 곳에서 검색을 캐시 할 수 있습니다. 물론 일부 클라이언트 측 JS에서는 요청에 대해 동일한 순서를 수행하는 것만으로도 도움이됩니다. – thecoshman

1

, 내 조언은 전적으로 서버 디자인에 URI 구조에 대한 결정을 기반으로하는, 즉 서버가 수신을 구문 분석하는 방법이다 URI를 추출하여 해당 자원을 전달하십시오.

REST 디자인의 한 가지 원칙은 사용자/클라이언트가 리소스를 찾기 위해 URL을 작성하지 않아도되며 대신 리소스를 설명하는 일부 하이퍼 텍스트 (예 : HTML)를 읽고, 하이퍼 텍스트에서 적절한 링크를 얻으려면 (예를 들어, HTML에서 태그의 href 속성에 URL이 포함되어 있습니다. 임의 문자 열일 수도 있습니다.)

다시 생각해 보면, 응용 프로그램은, RESTfully하게 설계된 인터페이스를 가지고 아마 적합하지의 사용자/클라이언트가 임의의 이름이 범주에 대한 검색을 수행 할 수 있어야합니다.

+1

미디어 유형의 정의에 규칙이 잘 정의되어있는 한 URI 템플릿과 같이 URI 구성을 수행하는 것이 좋습니다. –

관련 문제