2009-07-17 6 views
3

이전에 작성한 PHP 애플리케이션이 있는데 RESTful API를 추가하고 싶습니다. 또한 시스템에서 항목을 가져 오기 위해 호출하는 URL 측면에서 Rails 응용 프로그램처럼 작동하도록 사이트를 확장하고 싶습니다.PHP로 RESTful API 및 웹 사이트 만들기

모든 종류의 폴더 및 인덱스 페이지를 만들지 않고도 Railsy 방식으로 PHP에서 항목을 호출 할 수있는 방법이 있습니까? GET 쿼리 태그를 사용하지 않고 PHP에서 정보를 호출하려면 어떻게해야합니까?

답변

13

mod_rewrite의 일부 양식을 사용하는 경우 .htaccess 파일을 사용하면 쉽게 처리 할 수 ​​있습니다.

이 같은 경우 :

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

그것은 당신이 액세스하려는 파일이 이미 존재하지 않는 것으로 확인됩니다. (파일이 hello.html이라면 http://yoursite.com/hello.html을 통해 액세스 할 사람이 필요함)

그런 다음 해당 파일이없는 경우 URL에 저장된 나머지 URL로 index.php 파일을로드합니다 변하기 쉬운.

이렇게하면 http://yoursite.com/pages/edit/24과 같은 것을 호출 할 수 있으며 url 변수 안에 index.php를/pages/edit/24와 함께로드합니다.

시작하면 모든 종류의 폴더 및 색인 페이지, 필요한 경우로드하는 데 사용되는 mod_rewrite, .htaccess 파일 및 index.php 만 필요하지 않습니다.

2

CakePHP과 같이 REST가 내장 된 PHP 프레임 워크 중 하나를 사용할 수도 있습니다.

0

가장 쉬운 방법은 아마도 REST 지향적 인 기능을 제공하는 프레임 워크를 사용하는 것입니다. 나는 젠드 프레임 워크가 클래스 Zend_Rest_Server과 함께 REST 서버를 쉽게 만들 수 있다는 것을 알고있다.

나는 다른 많은 프레임 워크가 똑같이한다고 가정합니다.

그러나 이미 프레임 워크를 사용하지 않는 응용 프로그램 (또는 해당 종류의 클래스를 포함하지 않는 프레임 워크를 기반으로하는 응용 프로그램)을 사용하는 경우 몇 가지 URLrEwriting 규칙이 정상적으로 작동합니다. URL/매개 변수를 클래스/메소드에 매핑하는 작업이 조금 더 필요합니다 .-(

2

파스칼에 대한 respopnse의 빠른 주석 : Zend_Rest_Server는 REST와 아무런 관련이 없습니다. 더 유행하기 때문에 REST라고 부르세요

REST를하고 싶다면 아직 PHP에 대한 REST 라이브러리를 찾지 못해서 조금 더 많은 작업을해야합니다. 그래서 $_SERVER['REQUEST_METHOD']을 확인하십시오. 호출 된 리소스와 관련된 작업 등

+0

아, 내가 잘못했다. 사실 CakePHP는 실제로 REST에 꽤 멋지다.그것은 끔찍한 ORM 레이어를 가지고 있지만 ok :-) – skrebbel

0

찾고있는 디자인 패턴을 이라고합니다.

가장 간단한 형태로 mod_rewrite를 사용하여 들어오는 요청을 전달하고 단일 PHP 스크립트로 전달합니다. 그런 다음 url은 정규식으로 구문 분석되고 다양한 응답 작업에 매핑됩니다. 그러나 기존 응용 프로그램을 매핑하려면 광범위한 재 작성이 필요할 수 있습니다.

이 개념을 가지고 놀고 싶다면 Silex 마이크로 프레임 워크를 사용하는 것이 좋습니다.