基于Netty框架的轻量级Web框架

这里写自定义目录标题

  • 基于Netty框架开发的HttpWeb轻量框架
    • 支持的协议
    • 项目地址
    • 服务启动流程
          • 1.服务启动类:HttpServerLauncher
          • 2.服务启动流程:
    • 如何使用
        • 开发http接口示例:

基于Netty框架开发的HttpWeb轻量框架

使用该框架可以轻松的开发web应用接口,提供了一些类似于Spring框架的注解,例如@Controller, @RequestMapping,@RequestBody,@Param。

支持的协议

支持Http协议和WebSocket协议,另外您可以对该服务器扩展任何基于TCP的连接的协议(需要自己实现)

项目地址

github:https://github.com/DavidCate/NettyWebFrame

服务启动流程

1.服务启动类:HttpServerLauncher
2.服务启动流程:
2.1服务启动主要入口方法: 
public void launch(){
    logger.info("服务器启动程序");
    HttpServerLauncher launcher = null;
    try {
        launcher=init();
        start(launcher);
    }catch (Exception e) {
        Runtime.getRuntime().addShutdownHook(new Thread(new ShutDownBefore(launcher,e)));
    } finally {
        if (launcher!=null){
            launcher.workerGroup.shutdownGracefully();
            launcher.bossGroup.shutdownGracefully();
        }
    }
}

1.初始化服务器参数配置
2.初始化服务器容器
3.启动服务
4.服务异常中断处理

如何使用

开发http接口示例:

package com.aimango.robot.server.controller;

import com.aimango.robot.server.HttpServerLauncher;
import com.aimango.robot.server.core.annotation.Controller;
import com.aimango.robot.server.core.annotation.Param;
import com.aimango.robot.server.core.annotation.RequestBody;
import com.aimango.robot.server.core.annotation.RequestMapping;
import com.aimango.robot.server.core.container.Container;
import com.aimango.robot.server.pojo.Pojo;
import com.alibaba.fastjson.JSON;
import io.netty.buffer.ByteBuf;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpHeaders;

@Controller
public class TestController {

    @RequestMapping(url = "xxx",method = RequestMapping.Method.POST)
    public Object testPost(FullHttpRequest fullHttpRequest, @Param("xxx")String a,@RequestBody Pojo pojo){
        System.out.println(a);
        System.out.println(JSON.toJSONString(pojo));
        Container container = HttpServerLauncher.getContainer();
        container.getClass("");
        return null;
    }
}

示例解释:
与使用过的spring mvc框架非常类似,
1.你只需要使用@Controller注解注释一个接口类
2.此类里编写接口方法,并使用@RequestMapping注解声明接口的路由和请求的HttpMethod
3.只需要在方法参数列表声明FullHttpRequest就可以使用此内置参数
4.另外也支持@Param从Url路径中获取参数,或者使用@RequestBody从http请求体中获取参数并转换成你的实体类
5.默认会把接口方法的返回值进行json序列化返回

你可能感兴趣的:(服务器开发)