如何在Lagom的rest api路径中将请求参数作为可选项?

时间:2017-10-17 23:28:28

标签: java lagom

我想在其余的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使用相同的处理程序,一个使用请求参数,另一个没有请求参数。

例如:

  1. /api/users(为此,处理程序中的字符串过滤器应该 是空或空)
  2. /api/users?filter=abc(为此,过滤器的值应为 ABC)。
  3. 这可能吗?

1 个答案:

答案 0 :(得分:2)

是的,使用java.util.Optional<String>类型,以及此处记录的查询字符串的语法:

https://www.lagomframework.com/documentation/1.3.x/java/ServiceDescriptors.html#Path-based-identifiers

所以:

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);
  }
}