2013-12-10 14 views
5

Ich habe Restler auf meinem lokalen Server installiert, um einige APIs für mein Projekt zu testen und zu erstellen.Restler gibt immer zurück 404: Nicht gefunden

Api-Anfragen werden über http://localhost/myproject/api/ bearbeitet.

Das Problem ist, dass jedes Mal wenn ich versuche, eine Anfrage ich die folgende Fehlermeldung erhalten zu machen:

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

Auch dies ist mein .htaccess:

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

Und das ist, was die api.php wie folgt aussieht:

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

Ich denke, es gibt einige misconfigura herum, aber ich kann wirklich nicht herausfinden, was falsch ist.

(ich habe auch versucht, einige Lösungen auf Stackoverflow, aber sie scheinen nicht zu funktionieren für mich)

Edit:

ich das Beispiel versucht, zu erreichen mit dem folgenden Pfad http://localhost/myproject/resources/engine/library/restler/public/examples und sie arbeiten , also denke ich, dass es mit der Konfiguration von Restler selbst zu tun hat, weil es in http://localhost/myproject/api nicht zu funktionieren scheint.

Außerdem habe ich auch versucht, den Restler Explorer in http://localhost/myproject/api/explorer zu kopieren und ich bekomme weiterhin den Fehler: 404 : Not Found ../resources.json wahrscheinlich, weil ich nicht im Stammordner meines Projekts Restler installiert habe. Wie soll ich Restler in einem anderen Unterordner installieren?

Edit 2: Ich zog die folgende Klasse in dem Beispiel 001 Ordner:

class User { 

    function data() { 

     return "HELLO!"; 
    } 
} 

und hinzugefügt, um diese Zeile innerhalb der index.php des Beispiels:

$r->addAPIClass('User'); 

Wenn ich versuche, um das Beispiel bei .../_001_helloworld/index.php/say/hello laufen zu lassen funktioniert es ohne Probleme, aber wenn ich _001_helloworld/index.php/user/data versuche, ist es nicht.

An dieser Stelle habe ich jede Hoffnung verloren, und ich Hilfe denn wirklich brauchen wirklich etwas, was ich bin fehlt aber kann es wirklich nicht erraten, was :(HILFE!

Antwort

2

Hier ist, wie Sie debuggen können und finden was ist falsch,

  • den Namespace in api.php entfernen. Es ist nicht erforderlich, und wird zu Problemen führen.

  • Copy-Explorer-Ordner zu /myproject/api Ordner und fügen Sie Ressourcen cla ss als api Klasse

    $restler->addApiClass('Resources'); //this produces the needed resources.json 
    
  • Wenn Sie User-Klasse mit einem Namespace hinzufügen, stellen Sie sicher, dass es unter diesem Namensraum definiert und zur Verfügung gestellt mit Aussagen oder Autoloader enthalten.

  • Sie können /myproject/api/cache Ordner erstellen und beschreibbar machen. Wenn Sie restler im Produktionsmodus mit Cache-Aktualisierung instanziiert, wie unten dargestellt, wird es routes.php im Cache-Ordner erstellen, das alle Routen Informationen auflistet

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

Hoffnung, die Sie finden, was ist falsch mit dem oben

+0

Ich folgte den ersten 2 Schritten und das löste das Problem. Danke, ich schätze deine Hilfe wirklich sehr. – siannone

+0

Ich habe ein ähnliches Problem. Es hat gestern alles funktioniert, dann habe ich die 404 Nachricht von Restler bekommen. Keine meiner Webserver-Konfiguration hat sich geändert. Das geht über index.php funktioniert, und so oder ohne index.php erstellt eine Datei routes.php, die in beiden Fällen identisch ist. –

+0

Bitte ignorieren Sie meinen Kommentar; Ich habe die falsche URL verwendet .. Doh –