vertx简单服务创建

直接上代码

 

import java.util.HashMap;
    import java.util.Map;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    import com.yunva.vertx.test.vertproject.util.JsonUtil;

    import io.vertx.core.http.HttpServer;
    import io.vertx.core.http.HttpServerOptions;
    import io.vertx.core.http.HttpServerResponse;
    import io.vertx.core.MultiMap;
    import io.vertx.core.Vertx;

    public class TestServer {

    private static final Logger logger = LoggerFactory.getLogger(Server.class);

    public static void main(String[] args){
    HttpServerOptions options = new HttpServerOptions().setMaxWebsocketFrameSize(1000000);//Server配置

    Vertx vertx = Vertx.vertx();
    HttpServer server = vertx.createHttpServer(options);//创建Server

    server.requestHandler(request -> {
    request.handler(buffer -> {//从body中读取数据
    System.out.println("I have received a chunk of the body of length " + buffer.length());
    Map<String, Object> map = JsonUtil.jsonToMap(buffer.toString());
    System.out.println("name:" +map.get("name") + " school" + map.get("school"));
    });

    System.out.println("you have recieved a request from " + request.uri());
    System.out.println("you have recieved a request from " + request.absoluteURI());//绝对路径
    Map<String, Object> map = new HashMap<>();
    map.put("name", "hello");
    map.put("sdfa", "dsfakd");
    //设置返回头
    HttpServerResponse response = request.response();
    MultiMap headers = response.headers();
    headers.set("content-type", "text/html");
    headers.set("other-header", "wibble");
    request.response().setChunked(true).write(map.toString()).end("you get a reply from the server");
    });
    server.listen(8080, "127.0.0.1");
    }
    }
    /*
    * vertx创建服务接收请求并返回:
    * 创建HttpServer-->server.requestHandler---》request.handler---》request.response()
    * 
    * 处理表单请求
    * 表单请求分为两种方式:
    * 1 普通请求 application/x-www-form-urlencoded
    * 2 多文件请求 multipart/form-data
    * 对于普通请求,起参数均可以从URL中获取,可像处理一般请求一样处理
    * 对于multipart/form-data请求
    * server.requestHandler(request -> {
    request.setExpectMultipart(true);
    request.endHandler(v -> {
    // The body has now been fully read, so retrieve the form attributes
    MultiMap formAttributes = request.formAttributes();
    });
    });
    处理文件上传
    server.requestHandler(request -> {
    request.setExpectMultipart(true);
    request.uploadHandler(upload -> {
    System.out.println("Got a file upload " + upload.name());
    });
    });

    File uploads can be large we don’t provide the entire upload in a single buffer as that might result in 
    memory exhaustion, instead, the upload data is received in chunks:

    request.uploadHandler(upload -> {
    upload.handler(chunk -> {
    System.out.println("Received a chunk of the upload of length " + chunk.length());
    });
    });
    * 
    * 
    * 
    * */
原文地址:https://www.cnblogs.com/canmeng-cn/p/5938980.html