3 Stimmen

Restlet - Bereitstellung statischer Inhalte

Mit Restlet musste ich einige einfache statische Inhalte in den gleichen Kontext wie mein Web-Service zu dienen. Ich habe die Komponente mit einer Directory aber beim Testen habe ich festgestellt, dass nur 'index.html' angezeigt wird, alles andere führt zu einer 404.

router.attach("/", new Directory(context, new Reference(baseRef, "./content"));

Also... http://service y http://service/index.html beide funktionieren,

sondern http://service/other.html gibt mir eine 404

Kann jemand etwas Licht in diese Angelegenheit bringen? Ich möchte, dass jede Datei innerhalb des Verzeichnisses ./content verfügbar ist.

PS: Ich plane schließlich einen Reverse-Proxy zu verwenden und alle statischen Inhalte von einem anderen Webserver zu dienen, aber für jetzt brauche ich dies zu arbeiten, wie es ist.

2voto

Mark Renouf Punkte 30149

Nun, ich habe das Problem herausgefunden. Tatsächlich scheint Restlet Anfragen auf der Grundlage des Präfixes weiterzuleiten, aber es behandelt das längste übereinstimmende Präfix nicht korrekt und scheint auch Dateierweiterungen zu ignorieren.

Wenn ich also zum Beispiel eine Ressource an "/other" angehängt habe... und ein Verzeichnis auf "/". Wenn ich /other.html anfordere, erhalte ich tatsächlich die Ressource "/other". (Die Erweiterung wird ignoriert?), und nicht die statische Datei aus dem Verzeichnis, wie ich erwarten würde.

Wenn jemand weiß, warum das so ist, oder wie man es ändern kann, würde ich das gerne wissen. Es ist keine große Sache, nur zum Testen. Ich denke, wir werden Apache oder Nginx vor diesem in der Produktion sowieso setzen.

2voto

Josh Diehl Punkte 2752

Router in Restlet verwenden standardmäßig den Anpassungsmodus "Template.MODE_STARTS_WITH". Sie können den Router immer auf den Standardmodus setzen, indem Sie router.setMatchingMode(Template.MODE_EQUALS) ausführen. Dadurch wird der strikte Abgleich standardmäßig für Anhänge aktiviert. Sie können einzelne Routen mit setMatchingMode außer Kraft setzen.

Gute Dokumentation über Restlet-Routing

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X