gpt4 book ai didi

java - 将 REST 查询参数存储为静态字段

转载 作者:行者123 更新时间:2023-12-01 17:21:44 25 4
gpt4 key购买 nike

将查询参数存储为静态字段来处理请求是否是一个好习惯?例如,我的端点接受两个查询参数。为了验证和处理请求正文,我必须将这些查询参数传递给所有低级方法(例如菊花链)。为了避免这种情况,我可以将这些参数存储为静态类中的静态字段,并在需要时访问这些参数,而不是传递它们。我对 REST 开发相当陌生,如果有现有的模式来处理我面临的问题,我不想重新发明轮子。对我的方法有什么想法吗?

在下面的代码中,我将 query1、query2、query3 参数传递给 validateRequest API,该 API 再次将一些查询参数传递给其内部方法。这种菊花链将继续到低级方法。我的问题是,如果将这些查询参数存储在静态类中,我就不必传递查询参数。当API需要查询参数时,可以调用静态类来访问参数。伪代码:

public class Temp {

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)

public Response post(
@QueryParam("query1") final String query1,
@QueryParam("query2") final String query2,
@QueryParam("query3") final String query3,
final Object requestBody) {

validateRequest(requestBody,query1,query2,query3)

return Response.status(Status.OK).build();

}

private void validateRequest(Object requestBody, String query1, String query2, String query3) {

validateFirstPartOfRequest(requestBody,query1);
validateSecondPartOfRequest(requestBody,query1,query2);
validateThirdPartOfRequest(requestBody,query1),query3;
}

}

最佳答案

为了验证和处理请求正文,我必须将这些查询参数传递给所有低级方法我并不担心这一点。例如,请求参数将用于过滤集合资源,因此将这些参数传递到数据访问层以在数据库级别应用过滤器(条件查询)听起来很合乎逻辑。

如果您有很多参数,只需将它们包装到参数对象中( https://refactoring.guru/introduce-parameter-object )

关于静态,这确实是一个坏主意。静态数据将由到达 Controller 的所有请求(线程)共享,因此您将面临值之间的一些重叠。

不建议仅仅为了避免在类实例中携带静态变量而从多个线程更改静态变量,但如果这就是您想要做的,也许您应该看看ThreadLocal

关于java - 将 REST 查询参数存储为静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61279738/

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