gpt4 book ai didi

java - Jersey 条件路径

转载 作者:行者123 更新时间:2023-12-01 23:30:53 25 4
gpt4 key购买 nike

我有一个场景,我们支持两种不同类型的经过身份验证的用户(UserTypeA、UserTypeB),但它们永远不会在同一服务器环境中使用。现在,我们使用 2 个不同的 URL 路径 /path/usertypea/list/path/usertypeb/list。如果可能的话,我们希望它们使用相同的路径,例如 /path/list,并有一个环境变量作为知道将流量路由到何处的条件。每种用户类型的参数并不完全相同,数据的组织方式也存在一些差异。我们正在使用 Jersey 。

我尝试过一些诸如单例类之类的东西: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"

关于如何实现这一目标有什么建议吗?

最佳答案

添加一些标志来检查哪种类型的用户登录到自定义主体实现。然后您可以注入(inject)当前用户,然后在您的方法中调用 UserTypeAService.findAllUserTypeBService.findAll

@GET
@Path("/path/list")
public String yourMethod(@Context SecurityContext securityContext)

关于java - Jersey 条件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58290279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com