vertx的web开发学习笔记

创建一个 Http 服务

// 创建路由
Router router = Router.router(vertx);
// 创建 Http 服务
vertx.createHttpServer()
  // 绑定路由
  .requestHandler(router)
  // 监听端口
  .listen(8888)
  // Http 服务启动成功后调用
  .onSuccess(server ->
   		System.out.println("HTTP server started on port " + server.actualPort())
   );

Router 使用

直接使用上面的路由实例

创建请求路由

  • 创建 Get 请求路由

    router
      .get("/test")
      .respond(
        // 响应逻辑
      )
    
    // 或者
    router
      .route(HttpMethod.GET, "/test")
      .respond(
        // 响应逻辑
      )
    
  • 创建 Post 请求路由

    router
      .post("/test")
      .respond(
    		// 响应逻辑
    	)
    
    // 或者
    router
      .post(HttpMethod.POST, "/test")
      .respond(
    		// 响应逻辑
    	)
    

获取参数

  • 获取 URL 参数

    请求地址示例:http://localhost:8080/get?param=greycode

    router.get("/get").handler(context-> 
    		{
    				String param = context.request().getParam("param");
    				System.out.println(param);
    		}
    );
    
    // 控制台打印
    greycode
    
  • 获取 REST 风格的地址参数

    请求地址示例:http://localhost:8080/get/greycode

    router.get("/get/:param").handler(context-> 
    		{
    				String param = context.pathParam("param");
    				System.out.println(param);
    		}
    );
    
    // 控制台打印
    greycode
    
  • 获取 Body 数据

    请求地址示例:http://localhost:8080/post

    请求数据:

    {
     "name":"greycode"
    }
    
    // 在获取数据前,一定要执行这行代码
    // 否则就会报:警告: BodyHandler in not enabled on this route: RoutingContext.getBodyAsJson() in always be NULL‘
    router.route().handler(BodyHandler.create());
    
    router.post("/post").handler(context->{
      	JsonObject body = context.getBodyAsJson();
      	System.out.println(body.toString());
    	}
    );
    
    // 控制台打印
    {"name":"greycode"}
    

异常处理

router.get("/get").handler(context->
  {
      throw new RuntimeException("模拟错误");
  }
)
.failureHandler(context-> {
    // 发生异常时执行的代码
  }
);