gpt4 book ai didi

java - Jersey REST 查询参数组合验证

转载 作者:行者123 更新时间:2023-12-01 19:22:58 26 4
gpt4 key购买 nike

我有一个使用 Java 和 Jersey 实现的 RESTful 资源。

允许有以下任意一种查询参数组合

  • queryParam1 或
  • queryParam2 或
  • queryParam3 和 queryParam4

我目前的实现如下:

@GET
@Path("/my-resource")
public MyResource findMyResource(
@QueryParam("param1") String param1,
@QueryParam("param2") String param2,
@QueryParam("param3") String param3,
@QueryParam("param4") String param4) {

if (param1 != null && (param2 == null && param3 == null && param4 == null)) {
...
} else if (param2 != null && (param1 == null && param3 == null && param4 == null)) {
...
} else if (param3 != null && param4 != null && (param1 == null && param1 == null)) {
...
} else {
// return 400 BAD REQUEST
}
...
}

这看起来真的很难看。有没有办法以更干净的方式实现这一目标?

最佳答案

如果我是你,我只会使用三个不同的 API。一种仅采用 param1 - 如果 findMyResourceByParam1 则调用(甚至可能不作为查询参数,而是作为路径参数,因为它是必需的),一种仅采用 param2,依此类推。

这也使得使用 API 的人不太可能弄乱需要指定的参数。

此外,这是相当主观的,但 IMO 查询参数应该是可选的,如果您的 API 需要一个或多个参数,那么它们应该是路径参数而不是查询参数。

关于java - Jersey REST 查询参数组合验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59340529/

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