gpt4 book ai didi

micronaut - 使用 Micronaut 获取多个请求参数 @PathVariable 和 @RequestAttribute?

转载 作者:行者123 更新时间:2023-12-03 21:18:50 25 4
gpt4 key购买 nike

我的 Controller 中有一个带有不同参数的 get 函数:

myinterface.java :

public interface MyInterface {

@Get(value = "/bob/{name}/params?surname={surname}")
String getMyParam (
@Parameter(name="name", required=true)
@PathVariable("name") String name,
@NotNull
@Parameter(name="surname", required=true)
@Valid
@RequestAttribute(value="surname") String surname) {

}
}

mycontroller.java :
public class MyController implements MyInterface {

@Override
public String getMyParam(String name, String surname) { return name + surname; }
}

但是当我调用“ http://localhost:8080/bob/marley/params?surname=lion”时,它会发送一条错误消息:找不到页面。

当我使用可选参数时 /books{?max,offset}这是工作。我错过了什么?

执行查询请求时 PathVariable 和 RequestAttribute 是否不可混合?

编辑 1

当我删除 ?surname=={surname}从@Get 值发生“HttpClientResponseException: Require argument [String surname] not specified”。

最佳答案

surname在您的情况下不是请求属性而是查询值(参数)。所以使用 @QueryValue注释而不是 @RequestAttribute并且不要在 URL 模式中指定它。

所以 Controller 实现可以是这样的:

@Controller
public class MyController {
@Get(value = "/bob/{name}/params")
String getMyParam(String name, @QueryValue String surname) {
return name + surname;
}
}

另一件事是 @NotNull surname 的注释参数是多余的。默认情况下需要该参数。如果你希望它是可选的,那么它必须是 Optional像这样输入:
@Get(value = "/bob/{name}/params")
String getMyParam(String name, @QueryValue Optional<String> surname) {
return name + surname.orElse("");
}

关于micronaut - 使用 Micronaut 获取多个请求参数 @PathVariable 和 @RequestAttribute?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56974909/

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