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是否有了大概的了解?那么开始撸代码吧。

本文源代码地址:https://gitee.com/dev-tang/learning-vertx/tree/learn-02/

本博客采用 知识共享署名-禁止演绎 4.0 国际许可协议 进行许可

本文标题:Vert.x系列(一),Http Router

本文地址:https://jizhong.plus/post/2020/03/vert.x-01.html