gpt4 book ai didi

java - 如何将 ApiParam 传递给另一个变量的 validator ?

转载 作者:太空宇宙 更新时间:2023-11-04 09:18:23 26 4
gpt4 key购买 nike

我有点困惑,不知道除了放弃让这个 validator 像我希望的那样全面之外我应该做什么。我有一个看起来很像这样的端点:

@PutMapping(value = "/v1/operation/{actionType}")
public void operation(
@ApiParam(value = "type", required = true, allowableValues = "retry-all, retry-parquet, re-drop")
@PathVariable("actionType") RetryActionType actionType,

@Null @RequestBody @Valid RetryDto retryDto
) throws Exception {...}

现在,retryDto 后面的 @Valid 注释是一个非常充实的 validator ,可确保 retryDto 是正确的。问题是,随着最近的发展和添加的额外功能,retryDto 的有效性现在取决于 actionType

我对如何在 retryDto 中包含 actionType 感到非常困惑。我的限制如下:

  1. 我无法更改此端点。例如,我无法将 actionType 设为 ApiParam,也无法将 retryDto 设为 RequestBody。至少我不这么认为。如果您能想到一种智能方法来保持端点 ("/v1/operation/{actionType}") 相同,接受 {actionType} 作为 ApiParam 请求正文,但是,比如说,它们都可以制作成一个对象,如下所示:

    @PutMapping(value = "/v1/operation/{actionType}")
    public void operation(
    @??? @??? @??? NewTypeThatIsActionTypeAndRetryDto x
    ) throws Exception {...}

    我会同意的。同样,NewType... 必须能够接受 ApiParam 和 RequestBody。怀疑这是可能的,但我不是专家。

  2. 我无法让客户端在 retryDto 的 RequestBody 中包含 actionType。这并不意味着,如果你们中的任何人知道我可以自动将 actionType 添加到 retryDto 的方法,那将是 Not Acceptable 。换句话说,我可以更改 retryDto 以“自动”接受 actionType。当然,不用说我的 validator 必须能够看到它。

我想就是这样。我希望我能以某种方式自动将 actionType 添加到 retryDto 中。也许有某种方法可以让 @Valid 接受变量作为参数?我很确定注释必须采用常量......但也许有某种方法?

也许完全是别的东西?希望收到回复。谢谢

最佳答案

对于任何想知道的人,我几个小时前就弄清楚了。在我的函数内部,我调用了另一个实际使用 retryDto 参数的函数。我将 validator 放置在该函数的定义中并且它起作用了!我愚蠢地认为它只能在 api 函数内部工作,但是错了。

@PutMapping(value = "/v1/operation/{actionType}")
public void operation(
@ApiParam(value = "type", required = true, allowableValues = "retry-all, retry-parquet, re-drop")
@PathVariable("actionType") RetryActionType actionType,

@Null @RequestBody RetryDto retryDto
) throws Exception
{
...
retryDto.setActionType(actionType);
retryService.retry(actionType, retryDto);
}
public void retry(RetryActionType actionType, @Valid RetryDto retryDto)

成功了!最终更改了 retryD 以包含该内容,因此这是唯一的警告。也许不是真正的解决方案,如果有人有更好的想法,那就去吧。

关于java - 如何将 ApiParam 传递给另一个变量的 validator ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58665542/

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