Как 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, который предлагал бы список дублированных шаблонов сопоставления для ряда аннотированных классов обслуживания. Тем не менее, вы можете решить эту проблему, используя один из следующих методов:

  1. grep и awk исходный код @Path для генерации сортируемого списка выражений пути
  2. Используйте реализацию AnnotationReader для сканирования вашего пути к классам в рамках модульного теста и обнаружения дублированных шаблонов регулярных выражений.

Отредактировано, чтобы лучше задавать вопрос

RESTEasy использует систему на основе регулярных выражений для путей и выбирает наиболее близко соответствующий шаблон. В случае столкновения используется последний из найденных.

Другие вопросы по тегам