如何在 Lagom 的 rest api 路径中将请求参数设为可选?
How to make request param as optional in a rest api path in Lagom?
我想在其余 Call 方法的路径中将请求参数设置为可选。假设服务描述符是
public interface UserService extends Service {
ServiceCall<NotUsed, PSequence<User>> getUsers(String filter);
@Override
default Descriptor descriptor() {
return Service.named("user-service").withCalls(
Service.restCall(Method.GET, "/api/users",
this::getUsers)
).withAutoAcl(true);
}
}
我想对两个不同的 url 使用相同的处理程序,一个带有请求参数,一个没有请求参数。
例如:
/api/users
(为此,处理程序中的字符串过滤器应该
为 null 或空)
/api/users?filter=abc
(为此,过滤器的值应该是
abc).
这可能吗?
是,使用 java.util.Optional<String>
类型,此处记录查询字符串的语法:
所以:
public interface UserService extends Service {
ServiceCall<NotUsed, PSequence<User>> getUsers(Optional<String> filter);
@Override
default Descriptor descriptor() {
return Service.named("user-service").withCalls(
Service.restCall(Method.GET, "/api/users?filter", this::getUsers)
).withAutoAcl(true);
}
}
我想在其余 Call 方法的路径中将请求参数设置为可选。假设服务描述符是
public interface UserService extends Service {
ServiceCall<NotUsed, PSequence<User>> getUsers(String filter);
@Override
default Descriptor descriptor() {
return Service.named("user-service").withCalls(
Service.restCall(Method.GET, "/api/users",
this::getUsers)
).withAutoAcl(true);
}
}
我想对两个不同的 url 使用相同的处理程序,一个带有请求参数,一个没有请求参数。
例如:
/api/users
(为此,处理程序中的字符串过滤器应该 为 null 或空)/api/users?filter=abc
(为此,过滤器的值应该是 abc).
这可能吗?
是,使用 java.util.Optional<String>
类型,此处记录查询字符串的语法:
所以:
public interface UserService extends Service {
ServiceCall<NotUsed, PSequence<User>> getUsers(Optional<String> filter);
@Override
default Descriptor descriptor() {
return Service.named("user-service").withCalls(
Service.restCall(Method.GET, "/api/users?filter", this::getUsers)
).withAutoAcl(true);
}
}