Partie serveur API:serveur
Dans cette section, nous allons découvrir comment créer un serveur qui reçoit des requêtes. Le code est disponible dans la classe ServeurApp et dans le paquet eni.chapitres.chapitre5.
1. Définition
Pour créer un serveur, il faut définir plusieurs éléments :
-
Un acteur système implicite.
-
Un contexte d’exécution implicite.
-
Des routes. Route
Un acteur système permet de créer plusieurs threads et de répartir les tâches sur ces derniers. Dans notre exemple, nous n’allons pas gérer d’acteurs différents et utiliserons l’acteur système par défaut nommé avec la classe.
implicit val system: ActorSystem = ActorSystem("serveur-app")
Le contexte d’exécution est nécessaire dans le cas d’opérations asynchrones et d’utilisation de Future. On utilise le contexte fourni par l’acteur système qui permet de répartir les tâches sur les threads disponibles.
implicit val executor: ExecutionContext = system.dispatcher Future:ExecutionContext
Une route est représentée par un chemin et une action correspondante. Le type Route est défini comme une fonction qui prend en entrée un contexte et qui renvoie un résultat de type Future :
type Route = RequestContext => Future[RouteResult]
Lorsqu’une route reçoit une requête, matérialisée par le type...