2011-03-13 3 views
0

마이크로 프레임 워크에서 RESTful API 자원 아키텍처를 구현하려고합니다. 최근에 개발 한 고급 라우팅 기능을 활용하여 개체 계층과 병행하여 리소스 경로를 모델링합니다. (아, 공상이다!)RESTful API 자원 아키텍처 및 구문; 내가 제대로하고 있니?

내가 사용하고있어 URI의 구문은 다음과 같은 것을 매핑

'http://www.site.com/user;id=123/article;id=456' 

가 (한 번 내가 통합 :

'http:// www.site.com/resource [ ; key1 = param1 [ & key2 = param2 ] ]' 

이 같은 URI를 허용 할 라우터에이 기능)

$user->getByParams('id=123')->article->getByParams('id=456'); 

그래서 추가 예 :

,174,
'GET /user;id=123 GET' 
    # read User object data matching id=123 

'GET /user;id=123/article;id=456' 
    # read Article object data matching id=456 
    # belonging to User object matching id=123 

'GET /user;name=john&age=20/article;title=hello%20world' 
    # read Article object(s) data matching title='hello world' 
    # belonging to User object(s) matching name='john' and age=20 

마지막 문제는 여러 가지 결과를 쿼리 데이터와 비교하는 것입니다 (SQL의 경우 LIKE). 와일드 카드를 나타내는 안전 문자는 무엇이겠습니까? 별표 (*)는 하위 구분 기호 예약 목록 http://labs.apache.org/webarch/uri/rfc/rfc3986.html#reserved에 표시되므로 인코딩되지 않은 상태로 유지됩니다. 아마도 % 25 (%)

구현에 따라 다를 수 있다는 것을 알고 있지만 아이디어와 관련하여 RESTful API 자원 아키텍처를 구현하는 기존 프레임 워크가 있습니까?

또한 여기에 곡물을 완전히 반대합니까?

답변

1

현재 매개 변수가있는 URI 템플릿을 구성하는 가장 좋은 방법은 here입니다.

그렇다면 리소스 디자인을 시도 할 때 URI 디자인에 대해 실제로 생각해 봐야합니다. 나는 블록을 그려 이름을 짓고 자원을 연결하는 링크를 나타 내기 위해 화살표를 그려서 자원을 설계하고 시도한다. 이것은 웹 사이트 디자인과 비슷한 방식입니다.

그런 다음 리소스와 링크가 식별되면 서버 프레임 워크가 구문 분석하는 데 가장 쉬운 URI 체계를 만들 수 있습니다.

+1

** 감사 Darrel Miller ** 귀하의 자원 아키텍처 재검토에 대한 귀하의 조언이 실용화되었습니다. 여기에 제 사례의 가장 유용한 구현은 리소스 URI가 페이지 컨트롤러의 URI와 동일한 아키텍처를 사용하는 * REST/RPC * 하이브리드가 될 것이지만 API 호출은 페이지 컨트롤러를 건너 뛰고 JSON 요청 객체를 모델 ACL 프록시 (게이트웨이). – Dan