vert.x框架基础实现

未经授权不得转载

开发工具以及环境:

  1. IntelliJ IDEA 2018.2.4
  2. JDK 1.8
  3. Maven 3.5.4
  4. vert.x 3.4.2

首先创建一个空的Maven Project,pom.xml如下:


4.0.0com.lgcvertxproject1.0-SNAPSHOT3.4.2io.vertx.core.Launcherio.example.MainVerticleio.vertxvertx-core${vertx.version}io.vertxvertx-unit${vertx.version}testio.vertxvertx-web3.4.2io.vertxvertx-web-client3.4.2junitjunit4.12testmaven-compiler-plugin3.31.81.8org.apache.maven.pluginsmaven-shade-pluginpackageshade${main.class}${main.verticle}${project.build.directory}/${project.artifactId}-${project.version}-prod.jar

MainVerticle 代码如下:
启动器入口实现很简单

package io.example;import io.vertx.core.AbstractVerticle;/*** @Author: lgc* @Date: 2019/7/24 16:23*/
public class MainVerticle extends AbstractVerticle {@Overridepublic void start() throws Exception {vertx.deployVerticle(MyFirstVerticle.class.getName());}
}

下面是一个router 实现

package io.example;import io.vertx.core.AbstractVerticle;
import io.vertx.core.http.HttpMethod;
import io.vertx.core.http.HttpServer;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Route;
import io.vertx.ext.web.Router;/*** @Author: lgc* @Date: 2019/7/24 16:05*/
public class MyFirstVerticle extends AbstractVerticle {@Overridepublic void start() throws Exception {HttpServer server = vertx.createHttpServer();Router router  = Router.router(vertx);Route route =  router.route(HttpMethod.POST,"/helloPost").consumes("application/json").produces("application/json");route.handler(routingContext -> {HttpServerRequest request = routingContext.request();request.bodyHandler(body ->{JsonObject jsonObject = body.toJsonObject();String id = jsonObject.getString("id");String name = jsonObject.getString("name");// params -> jsonJsonObject responseData = new JsonObject();responseData.put("id",id);responseData.put("name",name);request.response().end(responseData.toString());});});server.requestHandler(router::accept).listen(8080);}
}

简单描述一下:

Router 路由器  : 请求分发需要通过路由器
Route  路由 : 主要是匹配对应的请求路径 
handler 处理器 :路径处理
Context : 上下文 
上述代码中,我们定义了HttpMethod 以及 consumes 、produces 。这里各位可以自行替换,选取合适自己的业务需求的。
HttpServerRequest  是 vert.x自身的接口,但是其实在api 上的使用可以等同于 Apache 的。

参数获取:
官方文档中的实例偏向于Restful 风格 ,所以提供的实例是通过路径中的占位符获取。

Route route = router.route(HttpMethod.POST, "/catalogue/products/:producttype/:productid/");route.handler(routingContext -> {String productType = routingContext.request().getParam("producttype");String productID = routingContext.request().getParam("productid");// 执行某些操作...
});

而我本人在实际使用中更加偏向传统的api定义方式并且反感在路径中携带参数的做法,所有在经过参考资料以及官方文档之后进行了修改。主要是 bodyHandler 消息体处理器 处理参数。
我们实例中的入参使用json对象,所以我们在处理参数时,选择了 body.toJsonObject() ,其他的进行逻辑处理即可。

POSTMAN 示例如下:

在这里插入图片描述
在这里插入图片描述
本文所参考文章如下:
官方中文文档 : http://vertxchina.github.io/vertx-translation-chinese/web/Web.html
风铃峰顶文章 : https://blog.csdn.net/haoranhaoshi/article/details/95097249


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部