2017-10-17 72 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); 
    } 
}