2017-10-17 5 views
0

Je veux rendre le paramètre request facultatif dans le chemin de la méthode Call restante. Supposons que le descripteur de service estComment faire pour demander un param comme optionnel dans un chemin d'api de repos dans Lagom?

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

Je veux utiliser le même gestionnaire pour deux urls différentes, l'une avec PARAMS et un sans PARAMS.

Par exemple:

  1. /api/users (pour cela, le filtre de chaîne dans le gestionnaire doit être nul ou vide)
  2. /api/users?filter=abc (pour cela, la valeur de filtre doit être abc).

Est-ce possible?

Répondre

2

Oui, utiliser un type java.util.Optional<String> et la syntaxe des chaînes de requête documentée ici:

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

Alors:

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