Restlet - serviert statische Inhalte
-
02-07-2019 - |
Frage
Mit Restlet Ich brauchte einige einfache statische Inhalte im gleichen Kontext wie meine Web-Service zu dienen. Ich habe die Komponente mit einem Directory
konfiguriert, aber in Tests, habe ich es nur auf ‚index.html‘, alles andere führt zu einer 404.
router.attach("/", new Directory(context, new Reference(baseRef, "./content"));
So ... http: // Service und http: //service/index.html beide arbeiten,
http: //service/other.html gibt mir eine 404
Kann jemand etwas Licht in diese? Ich möchte jede Datei innerhalb des ./content Verzeichnis zur Verfügung stehen.
PS:. Ich plane schließlich eine Reverse-Proxy zu verwenden und diene alle statischen Inhalten einer anderen Web-Server ab, aber jetzt muß ich dies als arbeiten
Lösung
Nun, dachte ich, das Problem aus. Eigentlich, um Anfragen Restlet erscheint basierend auf Präfix, aber nicht längsten passenden Präfix korrekt verarbeiten, wie es scheint auch Dateiendung zu ignorieren.
So zum Beispiel, wenn ich eine Ressource habe an „/ andere“ ... und ein Verzeichnis auf „/“. Und ich ersuche /other.html, was tatsächlich passiert ist, ich die „/ andere“ Ressource erhalten. (Die Erweiterung wird ignoriert?) Und nicht die statische Datei aus dem Verzeichnis, wie ich erwarten würde.
Wenn aynone weiß, warum dies so ist, oder wie man es ändern, ich würde gerne wissen. Es ist keine große Sache, nur zum Testen. Ich denke, wir werden auf jeden Fall Apache oder nginx vor diesem in der Produktion werden setzen.
Andere Tipps
Router in Restlet verwendet standardmäßig den „Template.MODE_STARTS_WITH“ passenden Modus. Sie können immer den Router Standardeinstellung von router.setMatchingMode (Template.MODE_EQUALS) zu tun. Dies wird sich auf strenge Prüfung standardmäßig für befestigen. Sie können wählen, einzelne Strecken mit setMatchingMode außer Kraft zu setzen.