Vert.x系列,Http Router

Posted 皮花猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vert.x系列,Http Router相关的知识,希望对你有一定的参考价值。

1、简单介绍


先来认识Router(路由);Http Router是用来负责转发http请求到具体方法的。


(图一)


用户从浏览器打开http://localhost:8080/users,程序就会执行getUserList方法,做一些逻辑处理后返回数据给浏览器。


程序能够通过/users找到getUserList方法执行,就是靠Router来实现的。


在spring中Router是通过@ReqeustMapping注解来配置的,比较古老的status框架是通过xml文件映射,而PlayFramework有一个专门的router文件在conf目录下。


各种方式都有,只要记住,Router就是uri跟方法的一个映射就可以了。


2、Vert.x Router实战

在Vert.x中http路由,由Router实例负责管理。请参考下面代码跟着笔者实现图一中的示例。

package com.javafm.vertx;
import io.vertx.core.AbstractVerticle;import io.vertx.core.http.HttpServer;import io.vertx.ext.web.Router;import io.vertx.ext.web.RoutingContext;
public class SimpleHttpServerVerticle extends AbstractVerticle { @Override public void start() throws Exception { HttpServer server = vertx.createHttpServer();
Router router = Router.router(vertx); router.route("/login").handler(this::login); router.post("/user").handler(this::addUser); router.delete("/user").handler(this::deleteUser); router.get("/users").handler(this::getUserList);
server.requestHandler(router); server.listen(8080); }
private void getUserList(RoutingContext ctx) { out(ctx, "getUserList"); }
private void deleteUser(RoutingContext ctx) { out(ctx, "deleteUser"); }
private void addUser(RoutingContext ctx) { out(ctx, "addUser"); }
private void login(RoutingContext ctx) { out(ctx, "login"); }
private void out(RoutingContext ctx, String msg) { ctx.response().putHeader("Content-Type", "text/plain; charset=utf-8") .end(msg); }}

从代码中可以看到,首先创建了一个Router实例,然后通过router、post、delete、get等方法路由到不同的地方去了。在Vert.x中路由的目标叫做Handler(对应在spring中一般叫controller,在status中叫action)。


Vert.x的Router支持所有的http method。如果用post方法来路由Handler,那么这个handler就只能用post请求访问,其它请求方式也是一样的,一一对应。

对Router是否有了大概的了解?那么开始撸代码吧。


以上是关于Vert.x系列,Http Router的主要内容,如果未能解决你的问题,请参考以下文章

Vert.x Web之Router

Vert.x系列(零),开篇,认识Vert.x并创建一个Http服务

Vert.x-Web的讲解和使用

Vert.x-Web的讲解和使用

Vert.x的路由器

vert.x学习,动态模板与静态文件的结合