例如,具有以下Java休息定义:
@GET
@Path("/something")
public String somthing(
@QueryParam("valString") String valString,
@QueryParam("valInt") int valInt,
@QueryParam("valBool") boolean valBool
) {
...
}
Run Code Online (Sandbox Code Playgroud)
并调用:
curl -X GET 127.0.0.1/something
Run Code Online (Sandbox Code Playgroud)
如果未在调用中指定,参数值将是什么?(valString =?,valInt =?,valBool =?)
我的 Spring Reactive Web API 应该能够根据查询参数进行过滤,但我正在努力做到这一点。
GET /v1/address?type=business
Run Code Online (Sandbox Code Playgroud)
应该返回系统中所有类型为“business”的地址(只是一个例子,因为我没有发布实际需求)。如果该参数不存在,则只返回所有地址。
[
{ "id" : 1, "type" : "business", "street" : "..."},
{ "id" : 2, "type" : "business", "street" : "..."},
...
}
Run Code Online (Sandbox Code Playgroud)
我正在使用路由器功能来映射请求:
public RouterFunction<ServerResponse> route(AddressHandler handler) {
return route(GET("/v1/address"), handler::getAddresses);
}
Run Code Online (Sandbox Code Playgroud)
但我正在努力确定如何检查参数,如果不存在,则返回所有地址。
class AddressHandler {
Mono<ServerResponse> getAddressesFilteredOrNot(ServerRequest request) {
Optional<String> addressType = request.getQueryParam("type");
...
}
}
Run Code Online (Sandbox Code Playgroud)
现在 Optional.ifPresent() 不起作用,我无法从该方法返回:
class AddressHandler {
Mono<ServerResponse> getAddressesFilteredOrNot(ServerRequest request) {
Optional<String> addressType = request.getQueryParam("type");
// invalid
addressType.ifPresent(addrType -> {
return ServerResponse.ok()
.body(this.service.getAddressByType(addrType),
Address.class); …Run Code Online (Sandbox Code Playgroud) 我有一个带有查询字符串id的 URL 。但是,变量id可以在 URL 中作为'id' 或 'Id'出现。
根据我的理解,这两个将被区别对待。为了处理以下 URL,我编写了附加屏幕截图中的代码:
除此之外,是否有任何简单的方法来处理区分大小写的变量并在 angular4 中正确取值?
queryparam ×3
angular ×1
handlers ×1
java ×1
javax.ws.rs ×1
reactive ×1
rest ×1
spring-boot ×1
typescript ×1