2017-02-19 13 views
0

Ich habe diese Pfadregeln mit Jersey Anmerkung:Jax-rs/Jersey regex Pfadregeln clashing

@GET 
@Path("{format:([^/]+?)?}") 

, dass es mit www.site.com/it matchs oder www.site.com, und das ist perfekt für mich. Nun möchte ich eine neue Regel hinzufügen, die mit folgenden Adressen übereinstimmt: www.site.com/it/search oder www.site.com/search. Ich habe versucht, diesen:

@GET 
@Path("{format:([^/]+?)?}/search") 

aber eigentlich die erste Regel gefeuert wurde, wie kann ich von dem ersten ausschließen kann manche Strings (wie Suche und andere ein) oder als gegenüber Lösungen, den optionalen Pfad begrenzen auf einige spezifische Werte, wie es, en, fr, etc .... Danke

+0

Ist "www.site.com/search" Ihre Pfadparameter? –

+0

@ CássioMazzochiMolin/Suche ist mein Pfad-Parameter –

Antwort

0

Versuchen für ersten Endpunkt:

@GET 
@Path("/{format: \\w*}") 

Und dies für die zweite Endpunkt:

@GET 
@Path("/{format: \\w*}/search") 
+0

ist mit statischen Inhalten Chaos, keine Bilder, CSS geladen werden, müssen mit anderen Pfaden kollidieren. –

+0

Sie könnten auch Sprache als Abfrageparameter hinzufügen. Oder Sie könnten den Sprachregex auf 2-3 Zeichen beschränken. – hya

+0

Ich möchte die Lösungen als Abfrageparameter vermeiden. Kann ich Sie sanft eine Lösung mit Regex auf 2 Zeichen begrenzt fragen? Ich habe es mit wenig Erfolg versucht! Vielen Dank! –

0

Am Ende fand ich diese Lösung: Optional path segment in Jersey JAX-RS

wirklich brauchen Sie nur neue URL-Muster für Ihr Servlet-Mapping hinzuzufügen. So brauchen Sie nur auf web.xml:

<servlet-mapping> 
    <servlet-name>JAX-RS Servlet</servlet-name> 
    <url-pattern>/api/*</url-pattern> 
    <url-pattern>/v1/api/*</url-pattern> 
</servlet-mapping>