Ici, nous allons rendre l'exemple Hello World de Premier article un peu plus compliqué et viser à «s'habituer à l'eau» appelé Ratpack.
Puisque le type est spécifié ici, il est écrit intentionnellement de manière redondante. Ne jetez pas de pierres.
public final class Sample3_HelloWorldRevisited {
public static void main( String[] args ) throws Exception {
ServerConfig config = ServerConfig.builder()
.port( 5050 )
.connectTimeoutMillis( 10000 )
.threads( 8 )
.development( true )
.build();
Registry registry = Registry.empty();
Action<Chain> handlers = ( Chain chain ) -> {
Handler handler = ( Context ctx ) -> {
ctx.render( "hello, world" );
};
chain.get( handler );
};
RatpackServer.of( spec -> spec.serverConfig( config )
.registry( registry )
.handlers( handlers ) )
.start();
}
}
ServerConfig
Une classe pour modifier les paramètres du serveur. Vous pouvez définir ici le numéro de port, etc.
Je pense qu'il est plus facile d'utiliser ServerConfigBuilder
tel qu'il est disponible.
Il existe également des méthodes pour lire les paramètres à partir de fichiers, comme json ()
et yaml ()
.
Il existe d'autres méthodes pour définir à partir des propriétés système et des arguments, vous pouvez donc créer ServerConfig
comme vous le souhaitez.
development(boolean)
Un indicateur qui active le mode de développement. Si activé, un gestionnaire sera ajouté automatiquement lorsqu'une erreur se produit.
Vous trouverez ci-dessous une comparaison lorsqu'une erreur 404 réelle se produit. En plus de la présence de la page d'erreur 404 de Ratpack, vous serez averti de définir votre propre gestionnaire dans le journal.
development(true)
19:02:26.231 [ratpack-compute-1-2] ERROR ratpack.error.internal.DefaultDevelopmentErrorHandler - 404 client error for request to /hoge
development(false)
19:00:55.861 [ratpack-compute-1-4] WARN ratpack.error.internal.DefaultProductionErrorHandler - Default production error handler used to render client error, please add a ratpack.error.ClientErrorHandler instance to your application (method: GET, uri: /hoge)
development (true)
est facile à utiliser, mais il semble recommandé de créer votre propre ʻErrorHandler` dans un environnement de production.
Il existe deux types de gestionnaires d'erreurs, «ClientErrorHandler» et «ServerErrorHandler».
ClientErrorHandler
est appelé lorsqu'il y a un problème avec la demande du client, tel que 404.
Remplace la méthode ʻerror () qui prend les codes de statut
Context et ʻint
comme arguments.
ServerErrorHandler
est appelé lorsqu'une erreur se produit dans le gestionnaire.
Il existe une méthode ʻerror () qui prend
Context et
Throwablepour représenter l'exception qui s'est produite. Puisque
ServerErrorHandler` est la dernière étape de la gestion des erreurs dans Ratpack, il est fondamentalement recommandé de ne pas lever d'exception.
Au fait, comme cette méthode a Throwable
comme argument au lieu de ʻException, même si ʻError
se produit, elle sera traitée.
En Java, il est généralement recommandé de ne pas attraper ʻError`, donc dans ce cas, il vaut mieux ne pas essayer de récupérer.
Registry
Cette classe enregistre des pièces telles que des modules dans le serveur Ratpack. Nous n'utiliserons rien cette fois, nous utiliserons donc une implémentation vide. Les gestionnaires d'erreurs ci-dessus, etc. peuvent être utilisés en s'inscrivant dans ce registre.
handlers
Les itinéraires Ratpack par plusieurs Handler
s regroupés par Chain
La méthode Chain.get (String, Handler)
lie une requête HTTP GET à un gestionnaire d'arguments.
La chaîne du premier argument est le chemin. S'il est omis comme cette fois, il sera mappé à l'itinéraire.
Context.render (Object)
est la méthode qui produit le corps de la réponse.
Puisque String est passé comme argument cette fois, cette chaîne de caractères sera sortie telle quelle, mais il est également possible de passer un objet autre que la chaîne de caractères.
render ()
est un mécanisme dans lequel Renderer
enregistré dans Registry
est appelé selon le type et converti en réponse.
String a un Renderer
intégré (pour être exact, CharSequence), vous pouvez donc l'appeler avec Context.render ()
sans enregistrer explicitement un moteur de rendu.
RatpackServer.of( spec -> spec.serverConfig( config )
.registry( registry )
.handlers( handlers ) )
.start();
Créez une instance RatpackServer
en définissant ServerConfig
, Registry
et Handler
dans la méthode ʻof () . La méthode
start ()` démarre le serveur et commence à accepter les requêtes.
Chaque méthode de RatpackServerSpec
(serverConfig ()
,registry ()
,handler ()
ethandlers ()
) a une instance de la classe correspondante comme argument et via ʻAction. Il y a plusieurs choses à régler. Personnellement, comme je l'ai mentionné dans l'exemple, je trouve plus facile d'utiliser des instances pour les configurations et les registres, et ʻAction
pour les gestionnaires. Cette zone est subjective, nous vous recommandons donc d'essayer différentes choses.
Recommended Posts