2010-03-18 3 views
4

Google 웹 서비스 API를 마무리합니다. 이제 경로를 변경하는 방법을 생각 중이므로 새 버전을 만들기로 결정하면 첫 번째 API를 중단하지 않습니다. 지금API 웹 서비스를 사용한 Symfony 라우팅

:

내가 생각 한 것을
url: /api/:action 
param: { module: api, action: :action } 
requirements: 
    sf_format: (?:xml|json) 

: 쉽게

url: /api/v1/:module/:action 
param: { module: api1, action: :action } 
requirements: 
    sf_format: (?:xml|json) 

url: /api/v2/:module/:action 
param: { module: api2, action: :action } 
requirements: 
    sf_format: (?:xml|json) 

하지만, 완벽한 솔루션을 제공합니다

# Automatically redirects to one module or another 
url: /api/v:version/:module/:action 
param: { module: api:version, action: :action } 
requirements: 
    sf_format: (?:xml|json) 

의 다음과 같은 종류가하는 것 그것을하는 방법에 대한 아이디어? 우리에게 무엇을 권하고 싶니?

감사합니다.

답변

1

나는 2 개의 경로를 갖는 접근법을 생각합니다. 하나는 v1을, 다른 하나는 v2를 사용하는 것이 더 나은 해결책이라고 생각합니다. 다시 작업하는 것처럼 들릴지도 모르지만, 생각하기 시작하면, versons에 대한 이유는 첫 번째가 두 번째와 호환되지 않는다는 것입니다. 그래서, 2 개의 로직을 혼합하면 과잉이 될 것입니다. 미래에 언젠가 3 버전을 가질 수 있다고 생각한다면, 당신의 논리는 어떻게 생겼을 것이라고 생각하니? 유 버전 1에 대한 지원을 그만해야하는 경우) = 버전 1에 대한 아주 좋은 생각입니다

+0

그것이 2 년 전의 결과입니다. 시간이 얼마나 빨리지나갑니다! – fesja

1

이전 라우팅 규칙을 사용하고 끝에 .xml1/.xml2/.json1/.json2를 추가하는 것은 어떻습니까? 그렇게하면 현재 모듈을 재사용 할 수 있고 새 뷰 ("indexSuccess.xml1.php") 만 만들어야합니다.

또는 새 라우팅 클래스를 만드시겠습니까?

+0

하지만, 그 파일을 분리 할 때 쉽게 할 수 있도록

더 나은 솔루션은 모두 분리를 확인하는 것입니다 두 경우 모두 컨트롤러 동작이 똑같이 작동하는 경우에만 작동합니다. 만약 그들이 약간 다르다면, 다른 파라메터를 검색하거나 다른 배열을 반환하기 위해 버전을 검사 할 필요가 있습니다. – fesja

0

here과 같이 사용자 지정 경로 수집을 만들어야합니다.

이렇게하면 필요한 모든 라우팅 요구 사항을 충족시킬 수 있습니다. 버전 로직을 라우트 클래스 및 라우트 콜렉션 클래스로 이동할 수 있습니다.