添加测试handler

一:定义上传json,注意,mId是必须的。

1 {
2 "mId": 101,
3 "name":"cddd",
4 "age":23
5 }

二:新建上传json解析类,继承上传抽象类AbstractUpMessage。

public class DemoRequest extends AbstractUpMessage {
public String name;
public int age; @Override
protected void decodeBody() {
name = bodyData.getString("name","");
age = bodyData.getInteger("age",0);
}
}

三:定义返回json

{
"mId": 101,
"code": 200,
"name":"res",
"info":"ininii"
}

四:定义返回编码类,继承AbstractDownMessage

public class DemoResponse extends AbstractDownMessage {
private String name;
private String info; public DemoResponse(short mId,String name,String info){
messageId = mId;
this.name = name;
this.info = info;
} @Override
protected void encodeBody() {
bodyData.put("name",name);
bodyData.put("info",info);
}
}

五,定义handler,实现接口 InterHandler

 1 public class DemoHandler implements InterHandler {
2 @Override
3 public void handler(AbstractUpMessage up, HttpServerResponse resp) {
4 //上传参数
5 DemoRequest request = (DemoRequest)up;
6 System.out.println("上传参数:"+ request.name + "-" + request.age);
7
8 //返回数据
9 String n = "cscscs---";
10 String in = "info ---";
11 //编码返回json
12 DemoResponse response = new DemoResponse(getMessageId(),n,in);
13 response.encode();
14 resp.end(response.SendMessage());
15 }
16
17 @Override
18 public short getMessageId() {
19 return HandlerCode.DEMO_V1;
20 }
21 }

六:加载handler。定义一个配置类Configure,初始化handler

public class Configure {
private static final Configure ourInstance = new Configure(); public static Configure getInstance() {
return ourInstance;
} public void init(){
initHandler();
} private void initHandler(){
HandlerManager.getInstance().addHandler(new DemoHandler());
}
}

修改OnlineServer主函数,加载configure。

   public static void main(String[] args){
Configure.getInstance().init(); VertxOptions vertxOptions = new VertxOptions();
Vertx vertx = Vertx.vertx(vertxOptions); //部署http服务器
vertx.deployVerticle(HttpServerVerticle.class.getName(),
new DeploymentOptions().setInstances(VertxOptions.DEFAULT_EVENT_LOOP_POOL_SIZE), res -> {
if(res.succeeded()){
logger.warn("服务端部署成功----");
}else {
logger.error("服务端部署失败---" + res.cause());
}
});
}

七:修改 MessageRecognizer 添加解码json的类

public class MessageRecognizer implements IMessageRecognizer {
@Override
public MessageFactory recognize(short messageId) {
switch (messageId){
case HandlerCode.DEMO_V1: return new DemoRequest();
default:return null;
}
}
}

八:启动服务,调用接口试试

成功!!!!

项目结构:

Vertx 实现webapi实战项目(五)的更多相关文章

  1. Vuejs实战项目五:数据列表

    1.在EasyMock 中添加数据列表模拟接口 请求url:/suyuan/list 请求方式:get 描述:数据列表 mock.js配置: 例: { "code": 2000, ...

  2. C# WebApi+Task+WebSocket实战项目演练(四)

    一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的第四部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理 ...

  3. ASP.NET WebAPI数据传输安全HTTPS实战项目演练

    一.课程介绍 HTTPS是互联网 Web 大势所趋,各大网站都已陆续部署了 HTTPS .  全站HTTPS时代,加密用户与网站间的交互访问,在客户端浏览器和Web服务器之间建立安全加密通道,一般情况 ...

  4. .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了

    写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git ...

  5. .NET Core实战项目之CMS 第十五章 各层联动工作实现增删改查业务

    连着两天更新叙述性的文章大家可别以为我转行了!哈哈!今天就继续讲讲我们的.NET Core实战项目之CMS系统的教程吧!这个系列教程拖得太久了,所以今天我就以菜单部分的增删改查为例来讲述下我的项目分层 ...

  6. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

  7. .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员 ...

  8. .NET Core实战项目之CMS 第七章 设计篇-用户权限极简设计全过程

    写在前面 这篇我们对用户权限进行极简设计并保留其扩展性.首先很感谢大家的阅读,前面六章我带着大家快速入门了ASP.NET Core.ASP.NET Core的启动过程源码解析及配置文件的加载过程源码解 ...

  9. .NET Core实战项目之CMS 第九章 设计篇-白话架构设计

    前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了.今天我们就好聊聊架构设计,在开始之前先给大家分享一下这几天我一直在听的<从零开始学架构>里面关于架构设 ...

  10. .NET Core实战项目之CMS 第十三章 开发篇-在MVC项目结构介绍及应用第三方UI

    作为后端开发的我来说,前端表示真心玩不转,你如果让我微调一个位置的样式的话还行,但是让我写一个很漂亮的后台的话,真心做不到,所以我一般会选择套用一些开源UI模板来进行系统UI的设计.那如何套用呢?今天 ...

随机推荐

  1. CH9121 FTP使用详解

    一.FTP简介: FTP是基于TCP应用层的网络文件传输协议,支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式).采用明文通信不加密. 1.Port模式 ...

  2. Eclipse java项目转Maven项目

    1.右键项目->configure->选择maven->配置maven的pom.xml 2.在src/main下新建java文件,将原来src下的java文件夹拷贝至该目录下: 3. ...

  3. Vue3+Ant-design项目启用ts/typescript

    Ant-design官方文档提供了js和ts两种案例,按照文档给项目install ant-design后写了个组件编译时发现只要加上`<script lang="ts"&g ...

  4. symfony5初体验:doctrine、配置、文件上传、jwt登录/auth等常见问题

    之前用symfony3.4,最近上手symfony5发现加入了很多新特性,搭配easyadminBundle.api-platform这些用起来感觉简直如有神助,瞬间爱了. 不过api-platfor ...

  5. 在WampServer下增加PHP版本

    WampServer更新比较慢,需要新版本的php时就需要我们自己去添加了. 步骤(这里默认你已经安装好了wampserver): 下载解压: 增加配置文件 重启wampserver 去php官网根据 ...

  6. Python实验3 函数与代码复用

    目的:理解函数封装与递归思想 实验任务: 基础 :编写函数cal_factorial(n)计算阶乘(循环实现). 源码: def cal_factorial(n): result = 1 for i ...

  7. sonarqube+gitlab+jenkins+maven集成搭建 (五)

    Jenkins与SonarQube Jenkins 配置 SonarQube在 SonarQube 中生成 Server authentication token登录 SonarQube 后,在 &q ...

  8. 【译】Visual Studio Hub 介绍

    跟上最新的 Visual Studio 更新.特性和资源就像是一项全职工作.我们已经听过一次又一次了--您想要一种更简单的方式来获取信息,而不是在分散的博客文章.发布说明和社交媒体更新中挖掘. 这就是 ...

  9. 设计模式之“模板方法模式(TemplateMethod)”

    一.使用场景 场景1 当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理 例如:将子类重复声明的方法提到父类去声明,利 ...

  10. MCP与华为云CSE珠联璧合,打造AI时代微服务生态引擎

    本文分享自华为云社区<MCP与华为云CSE珠联璧合,打造AI时代微服务生态引擎>,作者:华为云社区精选 从 AI 技术的"火热概念"到"实际业务的落地&quo ...