Vert .x
什么是Vert .x
?
Vert.x框架基于事件和异步,依托于全异步Java服务器Netty,并扩展了很多其他特性,以其轻量、高性能、支持多语言开发
Hello world
创建一个简单的项目start.vertx.io/ 无需添加任何依赖
1 | java复制代码public class MainVerticle extends AbstractVerticle { |
这个代码第一眼看上去就很复杂,但是其实仔细分析一下,会感觉其实很好理解
大致就是Vert.x
创建了一个Http
的服务,并添加请求头和响应的内容,监听8888
的端口,当服务创建成功时输出HTTP server started on port 8888
Run
下面两个命令很重要切记
1 | shell复制代码打包 |
web
项目
添加Vert.x Web
依赖
1 | xml复制代码<dependency> |
1 | java复制代码public class MainVerticle extends AbstractVerticle { |
1 | shell复制代码访问 |
Vert.x-Web基本概念
Router
是Vert.x-Web的核心概念之一。它是保持零个或多个的对象 Routes
。
路由器接收一个HTTP请求,并找到该请求的第一个匹配路由,然后将请求传递到该路由。
路由可以具有与之关联的处理程序,该处理程序然后接收请求。然后*,*您可以对请求进行处理,然后结束请求或将其传递给下一个匹配的处理程序。
创建一个简单的路由:
1 | java复制代码HttpServer server = vertx.createHttpServer(); |
处理请求并调用下一个处理程序
当Vert.x-Web决定将请求路由到匹配的路由时,它将在的实例中传递该路由的处理程序RoutingContext
。路由可以具有不同的处理程序,您可以使用 handler
如果您未在处理程序中结束响应,则应进行调用,next
以便其他匹配的路由可以处理请求(如果有)。
1 | java复制代码Route route = router.route("/some/path/"); |
1 | shell复制代码$ curl http://127.0.0.1:8080/some/path/ |
在上面的示例route1
中,将响应写入响应,然后在5秒钟后将route2
其写入响应,然后在5秒钟后将route3
其写入响应,并结束响应。(注意,所有这些都在没有任何线程阻塞的情况下发生。)
简单的回应
处理程序非常强大,因为它们允许您构建非常复杂的应用程序。对于简单的响应,例如,直接从vert.x API返回异步响应,路由器包括处理程序的快捷方式,以确保:
- 响应以JSON返回。
- 如果处理处理程序时发生错误,则返回正确的错误。
- 如果序列化对JSON的响应时出错,则返回正确的错误。
1 | java复制代码router |
1 | shell复制代码$ curl http://127.0.0.1:8080/some/path/ |
但是,如果提供的函数调用write
或,您也可以将其用于非JSON响应end
:
1 | java复制代码router |
1 | shell复制代码$ curl http://127.0.0.1:8080/some/path/ |
路由
按确切路径路由
1 | java复制代码Route route = router.route().path("/some/path/"); |
通过以某些内容开头的路径进行路由
1 | java复制代码Route route = router.route().path("/some/path/*"); |
通过HTTP方法路由
1 | java复制代码Route route = router.route(HttpMethod.POST, "/some/path/"); |
直接调用
get
、 post
、put
和delete
等以HTTP方法名称命名
1 | java复制代码router |
如果要指定一个路由将匹配多个HTTP方法,则可以method
多次调用:
1 | java复制代码Route route = router.route().method(HttpMethod.POST).method(HttpMethod.PUT); |
如果要创建需要自定义HTTP动词的应用程序(例如WebDav
服务器),则可以指定自定义动词
1 | java复制代码Route route = router.route() |
路线顺序
参考 处理请求并调用下一个处理程序
如果要覆盖路由的默认顺序,可以使用order
,指定一个整数值。
路由在创建时被分配一个与添加到路由器的顺序相对应的顺序,第一个路由编号0
,第二个路由编号1
,依此类推。
通过指定路线的顺序,您可以覆盖默认顺序。订单也可以是负数,例如,如果您要确保在路线编号之前评估一条路线0
。
1 | java复制代码 router |
1 | shell复制代码$ curl http://127.0.0.1:8080/some/path/ |
关于路由得东西太多,后面单独整理一期,单独研究一下,刚开始学习的话,还是先会用比较好
捕获路径参数
1 | java复制代码router |
1 | shell复制代码$ curl -X POST http://127.0.0.1:8080/catalogue/products/String/123/ |
如果对编程感兴趣,请关注我的个人博客 www.lzmvlog.top/
本文由博客一文多发平台 OpenWrite 发布!
本文转载自: 掘金