Enrutamiento de contenido estático en VertX

Estoy usando Vert.X (a través de la biblioteca org.jetbrains.kotlinx: vertx3-lang-kotlin ) con Kotlin y estoy tratando de build una aplicación de una sola página que esté contenida en un contenedor.

En el lado maven, estas son mis dependencies:

<properties> ... <vertx.version>3.3.2</vertx.version> <kotlin.version>1.0.3</kotlin.version> <main.class>Bob</main.class> </properties> 

 <!-- Vertx Dependencies --> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-core</artifactId> <version>${vertx.version}</version> </dependency> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-web</artifactId> <version>${vertx.version}</version> </dependency> <!-- Kotlin Dependencies --> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib</artifactId> <version>${kotlin.version}</version> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-test</artifactId> <version>${kotlin.version}</version> <scope>test</scope> </dependency> <!-- Kotlin Vertx Binding Dependency --> <dependency> <groupId>org.jetbrains.kotlinx</groupId> <artifactId>vertx3-lang-kotlin</artifactId> <version>[0.0.4,0.1.0)</version> </dependency> 

En mi class principal, tengo lo siguiente:

 object Bob { val log = LoggerFactory.getLogger(javaClass) val port = 9999 @JvmStatic fun main(args: Array<String>) { DefaultVertx { httpServer(port = Bob.port, block = Route { GET("/") { request -> headers().add("Author", "Re@PeR") contentType("text/html") sendFile("html/index.html") } otherwise { setStatus(404, "Resource not found") body { write("The requested resource was not found\n") } } }); } } 

Ir a localhost:9999 index.html se está publicando correctamente. Ahora quiero poder solicitar files css / js y servirlos también

 <!doctype html> <html> <head> <link rel="stylesheet" href="css/bootstrap.min.css" > <link rel="stylesheet" href="css/bootstrap-theme.min.css" > <script src="js/bootstrap.min.js"></script> 

Para cada uno de los resources, el browser devuelve un error 404 como se esperaba.

Ahora bash servir el CSS usando

  GET("/css/*") { request -> println("Serving CSS") contentType("text/css") sendFile("css/${request.path()}") } 

Pero no veo que alguna vez ingrese a ese bloque y continúa cumpliendo el error 404s.

¿Cuál es la forma correcta de servir files estáticos en Vert.X utilizando la biblioteca org.jetbrains.kotlinx: vertx3-lang-kotlin ?

Es mucho más simple.
En tu ejemplo, podría ser:

 router.route("/css/*").handler(StaticHandler.create()); 

Pero en realidad, debe poner todo en la carpeta / static o / public y server así:

 router.route("/static/*").handler(StaticHandler.create()); 

Es mis aplicaciones de Kotlin por lo general se ve así:

 val router = Router.router(vertx) router.route().handler(StaticHandler.create()) // Other routes here... 

Cuando cree StaticHandler de esa manera, se server desde el directory /resources/webroot de forma pnetworkingeterminada.

  • Vert.x. ¿Cómo crear una aplicación de JVM políglota real?
  • El código de Vertx Sync se ejecuta varias veces
  • En Vertx, necesito networkingirigir todas las requestes HTTP a la misma URL, pero para HTTPS
  • "La respuesta ya se ha escrito" con Vertx
  • Vert.x Kotlin Type Mismatch requinetworking Controlador <AsyncResult <Unit >> found (Handler <AsyncResult <Unit >>) -> Unidad
  • Vertx plus Koutlin coroutines cuelga para siempre
  • Cómo crear verticle de fábrica en VertX?