2013-08-29 5 views
2

Laravel을 사용하여 버전이있는 JSON API를 만들었습니다. 그런 다음 AngularJS를 사용하여 내 페이지를 채 웁니다. 현재 버전 컨트롤러를 사용하여 JSON을 반환하고 있습니다 (궁극적으로 의존성 삽입 & 버전 리포지토리를 대신 구현할 계획 임).PHP 네임 스페이스 API 버전 지정 규칙?

나는 형식 App\Controllers\API\v1.0 내 컨트롤러를 네임 스페이스를 시도했지만 내가 localhost를 방문 할 때 다음 JSON을 반환 브라우저, 800/API/1.0/회사를 내가 Class App\Controllers\API\v1.0\CompaniesController does not exist 것을 통보하고있다. 나는 이것이 .이 역 슬래시 중 하나로 해석되기 때문에 이것이라고 생각합니까? 네임 스페이스를 App\Controllers\API\v1 또는 App\Controllers\API\v1\v0으로 변경하여 응용 프로그램 기능을 만들 수는 있지만 전자는 적절한 버전 지정을 허용하지 않으며 후자는 조금 비현실적입니다.

내 API를 적절히 버전 화하려면 내 네임 스페이스에 어떤 규칙을 사용해야합니까? 모든 조언을 부탁드립니다! :)

+0

'php composer dump-autoload'를 시도해보십시오. 이 컨트롤러는 어디에서 씌우고 있습니까? PSR-0에서 자동로드합니까? 아니면'app/controllers' 디렉토리에 있습니까? – fideloper

+0

나는 네임 스페이스를 바꿀 때마다'composer dumpautoload'를 사용했습니다. 컨트롤러는'app/controllers/API/1.0/.'에 저장됩니다. 나의'routes.php'에서 컨트롤러를'App \ Controllers \ API \ v1.0 \ CompaniesController '로 직접 참조합니다. 경로와 컨트롤러가 작동하지만 네임 스페이스가 필요하거나 원하는 것은 아닙니다. –

답변

3

API는 외부에서 주요 버전 만 사용해야합니다. 모범 사례 semantic versioning에 따라 프로젝트에 이전 버전과 호환되지 않는 변경 사항을 도입하면 주요 버전이 변경됩니다.

기능을 추가하거나 하위 버전과 호환되는 방식으로 기존 기능을 수정하는 경우 기존 소비자에게 영향을 미치지 않습니다 (단, 원하는 경우 새로운 변경 사항을 사용할 수 있음) . 귀하의 API는 버전을 1.0.0에서 1.1.0 내부적으로으로 변경할 수 있지만 소비자에게 노출 된 버전은 여전히 ​​"v1"입니다.

방금 ​​버그를 패치하는 경우에도 마찬가지입니다. 1.0.1에서 1.0.2로 변경 내부적으로이지만 API는 "v1"로 유지되어야합니다.

리소스를 삭제하거나 이름을 변경하거나 기존 클라이언트를 손상시키는 다른 과감한 변경을 수행하면 이전 버전과의 호환성을 변경하려면 주요 버전을 변경해야하기 때문에 내부 버전이 1.2.0에서 2.0.0으로 변경 될 수 있습니다. 이 때문에 새로운 주요 버전은 API의 소비자에게 "v2"로 노출되어야합니다.

따라서이 네 가지 네임 스페이스와 URL은 주 버전 (예 : "v1") 만 반영해야하며 주요 버전에서 이전 버전과의 호환성을 깨뜨리지 않아야합니다.