У меня есть сценарий, в котором мы поддерживаем 2 разных типа аутентифицированных пользователей (UserTypeA, UserTypeB), но они никогда не будут использоваться в одной серверной среде. Прямо сейчас мы используем 2 разных пути URL /path/usertypea/list
против /path/usertypeb/list
. Мы бы хотели, чтобы они использовали один и тот же путь, если это возможно, например, /path/list
, и чтобы переменная окружения была условием, чтобы знать, куда направлять трафик. Параметры для каждого типа пользователей не совсем одинаковы, есть некоторые различия в том, как организованы данные. Мы используем Джерси.
Я пробовал несколько вещей, таких как классы Singleton: https://eclipse -ee4j.github.io / jersey.github.io / documents / latest / user-guide. html # d0e2650 / https://stackoverflow.com/a/33585724/12183373 но он никогда не маршрутизирует значение, он просто возвращает имя класса вместо ожидаемой полезной нагрузки JSON.
Вот часть кода:
@Path("/list")
public class GlobalSegmentServiceRouter {
@GET
@Produces("application/json")
public Class<?> findAll() {
boolean isUserTypeA = false;
if (isUserTypeA) {
return UserTypeAService.class;
} else {
return UserTypeBService.class;
}
}
}
Затем у меня есть 2 отдельных файла классов для следующего:
@Singleton
public class UserTypeAService {
public List<String> findAll(/*Parameters for A*/) {
// Do work here for User Type A
}
}
@Singleton
public class UserTypeBService {
public List<String> findAll(/*Parameters for B*/) {
// Do work here for User Type B
}
}
Когда я пытаюсь достичь конечной точки, это ответ, который я получаю:
"com.test.services.UserTypeAService"
Есть предложения о том, как этого добиться?