我想在其余的Call方法的路径中使request参数可选。假设服务描述符是
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
(为此,处理程序中的字符串过滤器应该
是空或空)/api/users?filter=abc
(为此,过滤器的值应为
ABC)。这可能吗?
答案 0 :(得分:2)
是的,使用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);
}
}