【发布时间】:2019-10-08 16:16:09
【问题描述】:
我有一个场景,我们支持 2 种不同类型的经过身份验证的用户(UserTypeA、UserTypeB),但它们永远不会在同一个服务器环境中使用。现在,我们使用 2 个不同的 url 路径 /path/usertypea/list 与 /path/usertypeb/list。如果可能的话,我们想让它们使用相同的路径,例如/path/list,并且有一个环境变量是知道将流量路由到哪里的条件。每种用户类型的参数并不完全相同,数据的组织方式存在一些差异。我们正在使用泽西岛。
我尝试了一些类似单例类的东西:https://eclipse-ee4j.github.io/jersey.github.io/documentation/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"
关于如何完成此任务的任何建议?
【问题讨论】:
-
即使您提到您尝试过的方法不起作用,如果您可以发布代码示例,那么这将有助于解决您的问题。也许您的解决方案很接近,但只需要一些调整。
-
完成!抱歉,一开始就应该这样做。
-
没问题,您发布了很好的示例,这些示例使您的问题更加清晰。