Gibt es eine einfache Möglichkeit, URLs ohne Groß- und Kleinschreibung in einem JAX-RS-Webdienst bereitzustellen? Das Ziel ist es, einen Webdienst zu erzeugen, der ein "milder Akzeptor" ist. 1
Ich kann mir vorstellen, dass dies mit einem Filter möglich ist, der .to[Lower|Upper]Case()
s alle eingehenden URLs enthält. Leider erfordert diese Implementierung Programmierer Disziplin / Konsistenz sicher zu machen, dass alle hartcodierte URL-Strings in der Anwendung sind streng [unterer | upper]. Fall
Außerdem kenne ich das JAX-RS-Analog zu einem Servlet-Filter noch nicht.
Wenn es darauf ankommt, verwende ich Jersey als meine JAX-RS-Implementierung.
1 Wie in "sei nachsichtig in dem, was du akzeptierst, und streng in dem, was du produzierst" (kann die Quelle nicht zurückrufen)
Die Antwort ist Nein, da im Grunde URIs nach RFC 3986 Groß- und Kleinschreibung beachten:
6.2.2.1. Case Normalisierung
Für alle URIs die Hexadezimalziffern innerhalb einer Prozentcodierung Tripel (z. B. "% 3a" gegenüber "% 3A") sind case-insensitive und daher nicht sollte normalisiert werden, um Großbuchstaben für die Ziffern A-F zu verwenden.
Wenn ein URI Komponenten der generischen Syntax verwendet, die Komponente Syntaxäquivalenzregeln gelten immer; nämlich, dass die Regelung und Host unterscheidet nicht zwischen Groß- und Kleinschreibung und sollte daher normalisiert werden Kleinbuchstaben. Zum Beispiel ist der URI entspricht Ссылка . Die andere generische Syntax Von Komponenten wird angenommen, dass sie die Groß- / Kleinschreibung beachten, sofern sie nicht spezifisch sind anders definiert durch das Schema (siehe Abschnitt 6.2.3).
Wenn Sie die Groß- / Kleinschreibung immer noch nicht beachten möchten, können Sie einen Servlet-Filter verwenden und ihn vor das JAX-RS-Framework stellen. Sie müssen in Ihrer Anwendung trotzdem konsistent sein.
Wenn Sie erwägen, von Jersey zu Apache Wink zu wechseln, können Sie das Dynamische Ressourcen , um sicherzustellen, dass alle URLs im unteren / oberen Bereich sind. Die Kombination eines Servlet-Filters mit den dynamischen Ressourcen kann daher eine vollständige Lösung für diesen Fall sein.