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-> {
// 发生异常时执行的代码
}
);