2012-05-30 3 views
0

PHP 프레임 워크로 CodeIgniter를 사용하여 웹 API를 작성하려고합니다.조건에 따라 CodeIgniter에서 컨트롤러를 구성하는 방법

이것은 REST API가 아닙니다. 모든 쿼리가 POST 쿼리가된다는 것을 의미하는 웹 API입니다.

일반적인 쿼리는

http://host/api1/user/get_name 

과 같은 상황의 API1와 API2에서

http://host/api2/user/get_name 

이 컨트롤러가되어 사용자가 아래의 방법이된다과 같이 표시됩니다.

내 api1 및 api2 클래스가 너무 커지고 단일 클래스에서 관련없는 코드를 혼합하고 싶지 않기 때문에이 문제에 만족하지 않습니다.

어떻게해야합니까? 서버가 \\ api \ 형식의 요청을 수신 할 때마다 적절한 컨트롤러로 전달하도록 .htaccess 파일 또는 라우팅 구성을 사용할 수 있습니까?

api1과 api2는 내 시스템의 유일한 컨트롤러가 아닙니다.

+0

해결책은 "컨트롤러"폴더에 api1이라는 폴더를 만든 다음 모든 사용자 관련 작업을 포함하는 '사용자'컨트롤러가있는 것입니다. – Gavin

+0

무엇을하려합니까? ** User **가 액션이 아닌 컨트롤러가되기를 원하십니까? api1 또는 api2를 요청했는지 여부와 상관없이 동일한 ** User ** 컨트롤러를 호출 하시겠습니까? –

+0

@GustavBertram URL에 api1과 api2를 표시하고 싶지만 컨트롤러가되기를 원하지 않습니다. 사용자가 컨트롤러가되고 api1과 api2가 URL에 나타나는 문자열 일 뿐이므로 CI의 아무 것도 매핑하면 안됩니다. –

답변

2

당신은

  1. 들이 상호 의존적 인 것들의 몇 가지 고려해야 할?
  2. 2 개의 웹 API를 유지 관리해야하는 구체적인 이유가 있어야합니다.

가 상호 의존하지 않으면 그게 당신이 할 필요가 없습니다 뒤에 다음 나는 그들이 다음 상호 의존적 인 경우이

http://host1/user/get_name 
http://host2/user/get_name 

당신이

http://host/api1/user/get_name 
http://host/api2/user/get_name 

이유를 수행해야 할 당신을 추천합니다 2 개의 다른 모형을 유지하십시오.

예를 들어 X_model.php에서 몇 가지 사항을 변경 한 경우 두 서버에 업로드해야합니다.

그리고 컨트롤러 아래에 폴더를 만들 수 있습니다. 나는 그것에 대해 매우 확신한다. 나는 codeigniter 1.7에서 그것을했다.

그래서 폴더를 각각 생성하고 계속 진행하십시오.

+0

둘 다 완전히 독립적입니다. Api1과 Api2는 가상의 이름입니다. 그들은 서로 다른 두 가지 일을합니다. –

+0

나는 codeigniter 컨트롤러 폴더 아래에 여러 개의 폴더를 만들 수 있다는 것을 알지 못했습니다. 덕분에 해결할 수 있습니다. –

+0

내 기쁨 내 친구 ...! 최고의 행운..! – KuKu

1

당신은거야 작품은 당신이 그것을 원하는 방식 인 경우에

$route['api(:num)'] = "api$1/"; 몰라 시험하지 않았다 시도 할 수 있습니다.

Codeigniter Routing

1

API1와 API2 무엇입니까? 그들은 서로 독립적입니까?

그렇다면, 나는 당신이 두 API에 대한 별도의 하위 도메인을 사용하는 것이 좋습니다 것입니다, 그래서 당신은이 작업을 수행 할 수 있습니다

http://api1.example.com/user/get_name 
http://api2.example.com/user/get_name 

이 두 API를 사이에 명확한 분리를 제공하고, 같은 컨트롤러로 User 수 있습니다 전체 API에 반대했다.

이렇게하면 호스팅 루트에 두 개의 디렉토리 (api1, api2)를 만들고 '설치'하여 두 개의 CI 인스턴스를 만들고 하위 도메인을 해당 디렉토리로 라우팅해야합니다.

+0

에 대한 귀하의 대답은 저에게 받아 들일 수 있습니다. –

0

URL 스키마에 아무런 문제가 없습니다. 이것은 codeigniter에서 controller -> action을 호출하는 방법입니다. 컨트롤러가 마른 체형이되도록하려면 라이브러리에서 실제 처리 코드를 이동하고 각 요청에 대해 라이브러리를 호출하십시오. 또는 다시 쓰기 규칙을 사용하여 다른 컨트롤러에서 작업을 배포 할 수 있습니다.

+0

메모리에로드하는 데 컨트롤러가 오래 걸립니다. 나는 그것을 마른 체형으로 유지하더라도 약 200 가지 방법이 있기 때문에 여전히 문제가됩니다. –

관련 문제