Как RESTeasy решает конфликт @Path
Рассмотрим код выше
@Path("a")
@Produces("text/plain")
public class A {
@GET
@Path("a")
public String getA() {
return "a";
}
@GET
@Path("a")
public String getB() {
return "b";
}
}
Запрашивая http://host/a/a, я всегда получаю "b".
Какова стратегия выбора подходящего метода? Любой способ получить информацию о нескольких путях к различным ресурсам?
1 ответ
Решение
Далее отредактировано в свете комментария
Я не знаю ни одного инструмента отчетности в RESTEasy, который предлагал бы список дублированных шаблонов сопоставления для ряда аннотированных классов обслуживания. Тем не менее, вы можете решить эту проблему, используя один из следующих методов:
- grep и awk исходный код @Path для генерации сортируемого списка выражений пути
- Используйте реализацию AnnotationReader для сканирования вашего пути к классам в рамках модульного теста и обнаружения дублированных шаблонов регулярных выражений.
Отредактировано, чтобы лучше задавать вопрос
RESTEasy использует систему на основе регулярных выражений для путей и выбирает наиболее близко соответствующий шаблон. В случае столкновения используется последний из найденных.