Groß- / Kleinschreibung bei URLs mit JAX-RS

8

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)

    
Matt Ball 11.04.2011, 16:31
quelle

2 Antworten

7

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.

    
Tarlog 11.04.2011, 18:33
quelle
4

Ich denke, ich habe eine einfache Lösung gefunden, die der JAX-RS-Spezifikation entspricht. Sie können in @Path Annotation regulären Ausdruck wie folgt verwenden:

%Vor%

Ich habe es mit JBoss RESTeasy implementiert. Sehen Sie mehr dort .

    
mschayna 10.11.2011 17:49
quelle

Tags und Links