2017-10-17 76 views
0

我想让请求参数在剩下的Call方法的路径中是可选的。假设服务描述符是如何在Lagom的rest API路径中将请求参数设置为可选参数?

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

我想使用相同的处理器为两个不同的网址,一个与请求PARAM和一个没有请求PARAM。

例如:

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

这可能吗?

回答

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); 
    } 
} 
相关问题