Restler всегда возвращает 404: не найден

Я установил Restler на своем локальном сервере для тестирования и создания некоторых API для моего проекта.

Запросы Api обрабатываются через http://localhost/myproject/api/ .

Проблема в том, что каждый раз, когда я пытаюсь сделать запрос, я получаю следующую ошибку:

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

Также это мой .htaccess :

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

И вот что выглядит api.php :

 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 и они работают, поэтому я предполагаю, что он имеет отношение к самой настройке самого Restler, потому что он не работает похоже, работает в http://localhost/myproject/api .

Кроме того, я также попытался скопировать проводник 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 это не так.

На данный момент я потерял всякую надежду, и мне действительно нужна помощь, потому что я действительно что-то упускаю, но на самом деле не могу догадаться, что 🙁 ПОМОЩЬ!

Вот как вы можете отлаживать и находить ошибки,

  • Удалите пространство имен в api.php. Это не требуется и вызовет проблемы.

  • Скопируйте папку explorer в папку /myproject/api и добавьте класс Resources в класс api

     $restler->addApiClass('Resources'); //this produces the needed resources.json 
  • Если вы добавляете класс User с пространством имен, убедитесь, что он определен в этом пространстве имен и доступен с вашими заявлениями или автозагрузчиком.

  • Вы можете создать папку /myproject/api/cache и сделать ее доступной для записи. Когда вы создаете резервную копию в режиме производства с обновлением кеша, как показано ниже, он создаст файл маршрутов.php в кеше, в котором перечислены все данные маршрутов

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

Упование вы находите что неправильно с вышеуказанным