2013-04-06 1 views
0

я определил следующие два @Path в JAX-RS:JAX-RS URI сопоставления с использованием регулярных выражений

@Path("{ontoId: [a-zA-Z0-9]+}/{version: [0-9]+}") 
@GET 
public String getSomething(){ 
     return "First"; 
} 
@Path("{ontoId: [a-zA-Z0-9]+}/{version: [0-9]+}/{entity:#([a-zA-Z0-9]+)}") 
@GET 
public String getAnotherthing(){ 
     return "Second"; 
} 

, которые не могут выделить следующие три Urls:

GET http://localhost:8080/pizza/20060718/#abcd 
GET http://localhost:8080/pizza/20060718#abcd 
GET http://localhost:8080/pizza/20060718 

То есть, все эти три Urls вернут «Первое».

Что случилось с моим определением @Path?

Спасибо!

ответ

0

FWIW, было бы хорошо указать, какую реализацию JAX-RS вы используете.

Также обратите внимание, что знак «#» не является допустимым символом компонента пути URI и на самом деле является разделителем для компонента фрагмента URI. Таким образом, он не будет анализироваться как часть алгоритма согласования хода запроса JAX-RS. По сути, во всех вышеперечисленных случаях будет сопоставлен только «20060718» (предполагая, что «пицца» - это ваш путь к контексту приложения).

Смежные вопросы