Мы использовали Resteasy 3.0.9 для наших веб-сервисов JAX-RS и недавно перешли на 3.0.19, где мы начали видеть много предупреждений RESTEASY002142: Multiple resource methods match request
.Может ли Resteasy изучить тип параметра для методов JAX-RS?
К примеру, у нас есть такие методы, как:
@Path("/{id}")
public String getSome(UUID id)
@Path("/{id}")
public String getSome(int id)
Я не уверен, как это работает в 3.0.9, возможно, мы просто очень повезло, как кажется Resteasy выбрать первый метод из всех кандидатов (и 3.0.19).
Одним из решений является явно указать регулярное выражение: @Path("/{id : [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}}")
Но есть способ как-то сказать Resteasy разобраться в параметрах метода и построить соответствующее регулярное выражение автоматически?
Спасибо за ответ. Тем не менее, это не отвечает на вопрос полностью. Спецификация JAX-RS 2.0 не запрещает реализации для просмотра типов параметров во время шага 2 сопоставления запросов: Для каждого класса Z в C добавьте регулярные выражения в E для каждого метода и локатора подресурса следующим образом: i. Для каждого метода субресурсов D добавьте R (TD), где TD является шаблоном пути URI метода подресурсов. Restaasy уже преобразует шаблоны, такие как '' '/ things/{id}' '' в регулярные выражения. Таким образом, существует возможность для регулярных выражений типа. – relgames
Итак, часть «По крайней мере, не должна» неверна, согласно спецификации JAX-RS 2.0. Если я ошибаюсь, укажите мне точное место, где спецификация запрещает его. – relgames
@relgames JAX-RS 2.0 указывает, что реализациям не требуется использовать алгоритм, как указано в спецификации, но должен приводить к результатам, эквивалентным результатам, полученным алгоритмом, описанным в спецификации. Спецификация JAX-RS 2.0 не запрещает реализации для изучения параметров типов методов, и, насколько я знаю, RESTEasy этого не делает. –