2011-05-16 3 views
31

쿼리 매개 변수를 사용하여 RESTful 검색 URI를 디자인하고 싶습니다.RESTful 검색에 HATEOAS 및 Query Parameters를 어떻게 사용할 수 있습니까?

GET/사용자

그리고 "하비"마지막 이름의 처음 25 사용자 :

GET/사용자 예를 들어,이 URI는 모든 사용자의 목록을 반환? 성 (姓) = 하비 &에서 maxResults = 나는 "/ 사용자"에 의해 허용되는 쿼리 매개 변수를 설명하는 하이퍼 미디어를 사용하는 방법 (25)

RESO 응? 새로운 Google Tasks API은 참조 가이드의 모든 쿼리 매개 변수를 문서화 한 것으로 나타났습니다. 나는 그 목록을 문서화 하겠지만, 나는 HATEOAS와 함께하고 싶다.

미리 감사드립니다.

+1

나는이 질문을 +10 할 수 있으면 좋겠다. –

답변

21

당신이 할 것 URI template spec의 현재 초안에 설명 된 구문을 사용하여 :

/users{?surname,maxresults} 
+1

URI 템플릿 사양이 매우 유용합니다. –

6

다른 옵션을하는 HTML 양식을 사용 :

<form method="get" action="/users"> 
    <label for="surname">Surname: </label> 
    <input type="text" name="surname"/> 
    <label for="maxresults">Max Results: </label> 
    <input type="text" name="maxresults" value="25"/> <!-- default is 25 --> 
    <input type="submit" name="submitbutton" value="submit"/> 
</form> 

이 같은 형태가 완전히 문서를 사용 가능한 옵션 및 기본값이 있으면 지정된 URL을 만들고 거기에 넣으려는 추가 문서로 주석을 달 수 있습니다.

+2

어쩌면 요점을 놓치 겠지만 리소스가 HTML이 아닌 경우에는 작동하지 않습니다. –

+1

이 html 형식은 GET 요청을 공식화하는 방법입니다. 요청한 미디어 형식 형식이 무엇이든지간에 얻을 수있는 것은 완전히 다른 무언가가 될 수 있습니다. – HDave

1

나는 더 REST 전문가입니다,하지만 내 2 ¢ 던져 보자

인간의 웹에

, HTML 양식은 종종 검색 결과의 표현에 URI를 구축하는 데 사용됩니다. 문제는 프로그래머블 웹에 폼이 없다는 것입니다. 그러나 당신은 쉽게 유사한 자신을 뭔가 뭔가를 정의 할 수있다, 즉 :

  1. 는 이제 application/prs.example.searchdescription+json 말 (하지만이 대답의 끝에서 P.S.을주의 깊게 살펴)하자, 검색에 대한 설명은 미디어 유형을 정의;

  2. 사용자 검색을 나타내는 하위 리소스를 표시합니다 (/users/search).

두 번째 단계는 다른 곳의 하위 리소스에 연결하여 수행됩니다. 예를 들어 클라이언트가 GET /users을 요청했다고 가정 해 보겠습니다. 여기

POST /users/search 
… 
Content-Type: application/prs.example.search-definition+json 
… 

{ criteria: { surname: "Harvey" }, maxResults: 25 } 

criteria는의 (부분) 표시를 포함 : 클라이언트는 해당 리소스 URI에 링크 및 POST 검색 사양에 따라 수

{ _links: [ …, { rel: "search", href: "https://stackoverflow.com/users/search" }, …] } 

, 예를 들어 : 그것은이 같은 것을받을 수 있습니다 발견되는 객체 이것은 임의로 복잡한 설명으로 만들 수 있습니다.

{ _links: [ { rel: "results", href: "/users?surname=Harvey&maxResults=25" } ] } 

클라이언트 수 : 전술 한 바와 같이 요청에

, 서버는 게시 된 검색 결과를 나타내는 자원, 엔터티 본문에 링크를 상태 코드 200 OK로 회신 할 수 results 관계가있는 URI로 이동하여 URI 자체를 조합하지 않아도 검색 결과를 얻을 수 있습니다.

P. : 처음에이 책을 썼을 때 항상 새로운 미디어 유형을 정의하는 것이 문제가 될 수 있음을 깨닫지 못했습니다. the profile link relation을 사용하여 Mark Nottingham blogged about "media type proliferation" and how to combat it을 사용하십시오.

관련 문제