2013-12-10 6 views
5

로컬 서버에 Restler를 설치하여 프로젝트에 대한 일부 API를 테스트하고 만들었습니다.Restler는 항상 404를 반환합니다. 찾을 수 없음

API 요청은 http://localhost/myproject/api/을 통해 처리됩니다.

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^api(.*)$ /myproject/api/api.php [QSA,L] 

그리고 이것은 api.php의 모습입니다 :

{ 
    "error": { 
     "code": 404, 
     "message": "Not Found" 
    }, 
    "debug": { 
     "source": "Routes.php:383 at route stage", 
     "stages": { 
      "success": [ 
       "get" 
      ], 
      "failure": [ 
       "route", 
       "negotiate", 
       "message" 
      ] 
     } 
    } 
} 

또한이 내 .htaccess입니다 :

문제는 내가 다음과 같은 오류가 요청을하려고 매번 것입니다 :

namespace myproject; 

use Luracast\Restler\Restler; 

require_once($_SERVER["DOCUMENT_ROOT"]."/myproject/resources/engine/settings.php"); 
require_once(Settings\Path\Absolute::$library."/restler/vendor/restler.php"); 

$restler = new Restler(); 
$restler->addAPIClass("myproject\\User"); 
$restler->handle(); 

내가 잘못 생각하는 부분이 있습니다. 주위에 있지만, 나는 무엇이 잘못되었는지를 정말로 알 수 없다.

는 (나는 또한 유래에 대한 몇 가지 솔루션을 시도했지만 그들은 나를 위해 작동하지 않는 것)

편집 :

나는 다음과 같은 경로 http://localhost/myproject/resources/engine/library/restler/public/examples를 사용하여 예를 도달 시도

그들이 최선을 다하고 있습니다 , 그래서 그것은 http://localhost/myproject/api에서 작동하지 않는 것 때문에 그것은 Restler 자체의 구성과 관련이 있다고 생각합니다.

또한 Restler 탐색기를 http://localhost/myproject/api/explorer에 복사하려고 시도했는데 오류가 계속 나타납니다. 404 : Not Found ../resources.json 아마도 내 프로젝트의 루트 폴더에 Restler를 설치하지 않았기 때문일 수 있습니다. Restler를 다른 하위 폴더에 설치하려면 어떻게해야합니까?

편집 2 : 난 그냥 예제로 001 폴더에 다음과 같은 클래스를 이동 :

class User { 

    function data() { 

     return "HELLO!"; 
    } 
} 

및 예제의 index.php 내부에이 줄을 추가 :

$r->addAPIClass('User'); 

내가하려고하면 .../_001_helloworld/index.php/say/hello에서 예제를 실행하려면 문제없이 작동하지만, 시도하면 _001_helloworld/index.php/user/data이 아닙니다. 이 시점에서

나는 모든 희망을 잃고 난 정말 도움 '원인을 필요 정말 내가 뭔가를보고 싶어하지만, 정말 추측 할 수있는 :(HELP! 여기

답변

2

은 디버깅 및 찾을 수있는 방법입니다 무슨 잘못

  • 그것은이 필요하지 않습니다. api.php의 네임 스페이스를 제거하고 문제의 원인이됩니다.

  • 복사 탐색기 폴더 /myproject/api 폴더에 및 자원 CIA 요원을 추가 API를 클래스와 SS는

    $restler->addApiClass('Resources'); //this produces the needed resources.json 
    
  • 네임 스페이스를 사용하여 사용자 클래스를 추가하는 경우, 그것은 그 네임 스페이스에 정의하고이 문 또는 오토로더를 포함하여 제공해야합니다.

  • /myproject/api/cache 폴더를 만들고 쓸 수있게 만들 수 있습니다. 아래 그림과 같이 당신은 캐시 새로 고침과 생산 모드에서 restler 인스턴스화 할 때,

    $restler = new Restler(true,true); //production_mode, refresh 
    

는 위의

+0

에 무슨 잘못 찾아 낸다 모든 경로 정보를 나열 캐시 폴더에 routes.php를 생성합니다 나는 처음 2 단계를 따라 갔고 문제가 해결되었습니다. 고마워, 정말 고마워. :) – siannone

+0

나는 비슷한 문제가있다. 어제 모두 작동했는데 Restler에서 404 메시지를 받기 시작했습니다. 웹 서버 구성이 변경되지 않았습니다. index.php를 통해 이동하면 index.php를 사용하거나 사용하지 않고 동일한 방법으로 routes.php 파일을 만듭니다. –

+0

제 의견을 무시하십시오. 잘못된 URL을 사용하고 있습니다. Doh –

관련 문제