spielen framework2: remove trailing slash in urls
In play framework 1, könnten Sie in der Routen-Datei so etwas wie dieses (Dokumentation bei http://www.playframework.org/documentation/1.2.5/routes#syntax)
GET /clients/? Clients.index
so, dass die route entspricht /api/clients und auch /api/clients/
Wie kann ich erreichen das gleiche in play framework 2?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus SEO-Sicht die gleiche Verbindung mit
trailing slash
ist eine andere als link, ohne es. Es wird dringend empfohlen, immer ein schema (gezogene oder nicht gezogene links).Zwar gibt es verschiedene Schulen, die besser ist den meisten wichtig ist, um eine 301-Weiterleitung von der "falschen" URL auf die richtige. Sie erreichen es ganz einfach im Spiel mit einem 'Dynamischen Teil über mehrere /'.
Persönlich bevorzuge ich un-gezogene version, vielleicht, weil die Umsetzung im Spiel ist einfach wie das schreiben paar einfache Linien. Hinzufügen, um Ihre Routen-Datei diese Regel irgendwo am Anfang (halten Sie den slash - es ist wichtig, als es NICHT als als nächsten Schrägstrich in der spanning-Gruppe und erlaubt das match gezogenen URL ' s leicht):
dann können Sie einfach eine Umleitung in der controller - der param, so wird es ohne den slash am Ende:
Java
Scala
Bis jetzt alle Routen enden mit dem slash umgeleitet werden, um die un-gezogene version. Einfach 🙂
Natürlich ist es dringend empfohlen, die Verwendung von reverse-router für die Erzeugung von korrekten URL ' s zu minimalisieren redundante leitet. Auch wenn Sie hartcodieren den URL irgendwo (zB. in einigen JS oder in der externen Anwendung), es ist auch besser schreiben, korrigieren stattdessen konvertieren Sie jedes mal. Wenn Sie planen, veröffentlichen einige öffentliche API eine Notiz in die Dokumentation, das Muster muss Ihre Anwendung bevorzugen, so dass der Entwickler gewarnt werden, und (vielleicht) vorbereiten, die richtigen Anrufe.
Was ist mehr - am wichtigsten für
GET
Routen, wie Sie unterliegen der manipulation von der Seite des Kunden. Während der VerwendungPOST
,PUT
,DELETE
und andere, die Sie nicht brauchen (oder besser gesagt, Sie sollte nicht) zu kümmern, Weiterleitungen, da Sie nicht vom Benutzer geändert werden und auf diese Weise müssen Sie daran denken, welchen Weg Sie wählen. Im Falle der falschen Anruf, dh. für POST, nur einen 404 Fehler zurück - so die Entwickler der 3-te Teil der Anwendung wird verpflichtet, auf die Verwendung der richtigen Endungen.Habe ich es geschafft zu kommen mit etwas, es war nicht so einfach, wie ich gehofft, aber es ist kein Hexenwerk entweder
vns dann habe ich es verwenden, wie dies in der Globalen.scala
Aktualisiert das Beispiel von @opensas und @lloydmeta für die play-2.5
sehen https://www.playframework.com/documentation/2.5.x/ScalaHttpRequestHandlers für die Anleitung zur Anwendung der hf
Diese basiert auf opensas Antwort, nur vereinfacht ein wenig die Wiederverwendung Play built-in
copy
Methode aufRequestHeader
so, dass all die Dinge, die in der ursprünglichenRequestHeader
gehalten werden, wie die id, tags, version, sicher, etc.if (origReq.path.endsWith("/") && origReq.path != "/") {
Fügen Sie den Eintrag zweimal in der route-Datei. Mit dem Schrägstrich und eine ohne.