2011-11-05 2 views
0

저는 RESTful Yii 웹 서비스를 개발하려고합니다. 프로젝트의 최상위 레벨에는 데이터베이스 스키마 + GiiX를 사용하여 만든 모델이 있습니다. 나는에 살 수있는 웹 서비스를 원하는 웹 서비스 (WS) 모듈이 이제 모델은 매우 간단합니다 들면 다음과 같습니다.Yii의 URL 라우팅/컨트롤러를 처리하는 최적의 방법

  • Product
  • Brand (많은있다 (Brand에 속하는 한 Analysis가있다) Product)
  • Analysis은 (내가 KEE 할 필요가 없도록 지능적으로 urlManager 규칙을 만들려는

Product)에 속하는 새 작업 및/또는 새 컨트롤러를 만들 때 새로운 규칙을 추가하십시오. 내가 잘 모르는 것은 이것을 성취하는 방법이다. 지금은 사용자가 기준에 대한 몇 가지 필터를 사용하여 목록에 표시 할 수있는 기능만을 제공하려고합니다. ws/ProductController, ws/BrandController, ws/AnalysisController처럼 - - 먼저

, 나는 내가 작업 할 수 있습니다 각 모델에 대해 별도의 컨트롤러를 작성해야하거나 그냥 각각의 잠재적 리턴 유형에 해당하는 작업을 하나의 ws/WebServiceController을해야합니까? 나는 다음과 같은 달성하기 위해 무엇을 사용해야 URL 규칙을 염두에 첫 번째 질문에 대한 답으로

:

  • 더 PARAMS와 ws/* 컨트롤러 (들)에 대해 작업을 수행;
  • 일부 매개 변수가있는 ws/* 컨트롤러에서 조치를 수행하십시오.

또한 현재로서는 GET만을 사용하고 있습니다.

RESTful API를 만들 때 Yii의 http://www.yiiframework.com/wiki/175/how-to-create-a-rest-api/ 페이지를 살펴 봤지만 예제를 내 자신에게 적용하는 방법에 대해서는 약간 혼란 스러웠습니다.

답변

0

어느 쪽이든 할 수 있습니다. 별도의 컨트롤러를 생성하고 단일 컨트롤러에 여러 액션을 넣는 것이 효과적입니다. 개인적으로 나는 Ws 모듈을 만들고 그 안에 여러 컨트롤러를 넣는 것이 좋을 것이라고 생각합니다. 모델 당 하나 :

modules 
    ws 
    controllers 
     ProductController 
     BrandController 
     … 

자동 충분한 URL을 얻을 것이다이 방법 : ws/product, ws/brand, ws/brand/search, ws/product/order, 나는 내가 할 수있다 각 모델에 대해 별도의 컨트롤러를

0

먼저 만들어야 등 ws/ProductController, ws/BrandController, ws/AnalysisController와 같이 을 작업하고 싶습니다. 또는 ws/WebServiceController와 각각의 잠재적 인 반환 유형에 해당하는 액션이 ​​있어야합니까?

귀하의 응용 프로그램에 따라 다름이라고 생각합니다. 개인적으로는 각 모델에 대해 자체 컨트롤러를 만들고 필요한 경우 기본 클래스, 동작 또는 필터를 도입 할 수 있습니다.

매개 변수없이 ws/* 컨트롤러에서 작업을 수행하십시오. 일부 매개 변수가있는ws/* 컨트롤러에서 작업을 수행하십시오. 모듈을 가정

는 "웹 서비스"로 등록되어 당신이이 규칙을 사용할 수 있습니다 : $ _GET PARAMS의

'ws/<_c>' => 'webService/<_c>', 
'ws/<_c>/<model:\w+>/<id:\d+>' => 'webService/<_c>', 

사용을 규칙에 의존하지 않는, 당신은 단지 그들과 함께 URL이 좋네요 할 수 있습니다.

관련 문제