[JAVA] Introduction à Ratpack (3) - Explication détaillée de Hello World

Série d'introduction Ratpack

  1. Introduction à Ratpack (1) --Qu'est-ce que Ratpack
  2. Introduction à Ratpack (2) --Architecture
  3. Introduction à Ratpack (3) - Explication détaillée de Hello world
  4. Introduction à Ratpack (4) --Routage et contenu statique
  5. Introduction à Ratpack (5) --Json & Registry
  6. Introduction à Ratpack (6) - Promise
  7. Introduction à Ratpack (7) --Guice & Spring
  8. Introduction à Ratpack (8) - Session
  9. Introduction à Ratpack (9) --Thymeleaf

bonjour monde explication détaillée

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) 404_1.PNG

19:02:26.231 [ratpack-compute-1-2] ERROR ratpack.error.internal.DefaultDevelopmentErrorHandler - 404 client error for request to /hoge

development(false) 404_2.PNG

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. PuisqueServerErrorHandler` 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 Handlers 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

Introduction à Ratpack (3) - Explication détaillée de Hello World
Introduction à Ratpack (6) - Promesse
Introduction à Ratpack (9) --Thymeleaf
Introduction à Ratpack (2) -Architecture
Introduction à Ratpack (5) --Json & Registry
Introduction à Ratpack (7) --Guice & Spring
Introduction à Ratpack (1) - Qu'est-ce que Ratpack?
Introduction à Ratpack (Extra Edition) - Utilisation de Sentry
Introduction à Ruby 2
Introduction à Ratpack (Extra Edition) --Ratpack écrit en Kotlin
Lire "Hello world"
Introduction à web3j
Java, bonjour le monde!
Revenant au début, Java-Kisama s'est moqué de Hello World-
[Java] Introduction à Java
Introduction à la migration
Java Hello World
Introduction à Java
Essayez d'afficher Hello World avec Spring + Gradle
Introduction à Doma
Premier JavaFX ~ Introduction facile Bonjour création d'interface graphique universelle ~
Facile à afficher Hello World avec Rails + Docker
[Introduction] Affichez Android Studio Hello World sur l'émulateur
Introduction aux fichiers JAR
"Hello World" en Java
Introduction à l'arithmétique des bits
Apprendre Java (1) - Hello World
Lire System.out.println ("bonjour, monde")
Écrivons Hello World
Introduction à PlayFramework 2.7 ① Présentation
Introduction aux modèles de conception (introduction)
Hello World en Java
Introduction à la programmation pratique
Introduction à la commande javadoc
Étudier Java-Partie 1-Hello World
Introduction à la commande jar
Explication détaillée Acteur (libGDX)
Introduction au style lambda
Introduction à la commande java
Hello World avec Web Assembly
Introduction au développement de Keycloak
Hello World avec Micronaut
Introduction à la commande javac
[Introduction à Docker] ~ Explication la plus courte jusqu'au démarrage de jupyter lab ~
[Introduction à MVEL] Viser à être le meilleur MVELer au monde