2013-12-10 13 views
5

自分のローカルサーバーにRestlerをインストールして、自分のプロジェクトのためにいくつかのAPIをテストして作成しました。Restlerは常に404を返します:Not found

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(); 

私はいくつかのミスコンフィギュレーションがあると思います私は本当に何が間違っているのか理解できません。

(私もStackOverflowの上でいくつかのソリューションを試みたが、彼らは私のために動作するようには思えない)

編集:

私は次のパス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:私がしようとした場合

$r->addAPIClass('User'); 

class User { 

    function data() { 

     return "HELLO!"; 
    } 
} 

と例のindex.php内の行を追加: 私は単なる一例に001フォルダを以下のクラスを移動.../_001_helloworld/index.php/say/helloでその例を実行するには問題なく動作しますが、私が試してみると_001_helloworld/index.php/user/dataはありません。私はすべての希望を失っていると私は本当に私は何かが欠けていますが、本当にここでHELP!

答えて

2

は、デバッグと見つけることができる方法は何か:(推測することはできませんヘルプ」原因を必要とする。この時点で

いただきました!間違っている、

  • /myproject/apiフォルダに

  • 。それが必要とされず、問題が発生します。api.phpにコピーエクスプローラのフォルダを名前空間を削除し、リソースのCLAを追加します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メッセージを受信し始めました。私のWebサーバー構成は変更されていません。 index.phpを経由して、index.phpを実行しても、そうでなくても、どちらの場合も同じroutes.phpファイルが作成されます。 –

+0

私のコメントは無視してください。私は間違ったURLを使用していた.. Doh –

関連する問題