近日,对netty研究,编写了一个简单web容器(使用http协议),主要的功能有类扫描,拦截器和参数解析等。具有体积小,netty高效性,自定请求协议和自定请求过程的特点。
系统架构
container
|--container-core
|--container-web
|--container-example
案例(在container-example中)
引入jar
<dependencies>
<dependency>
<groupId>com.linger</groupId>
<artifactId>container-web</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
启动类
import com.linger.container.core.ContainerApplication;
import com.linger.container.core.RunContainer;
import com.linger.container.web.EnableWeb;
@RunContainer(scan = "com.linger.container.example")
@EnableWeb
public class TestApplication {
public static void main(String[] args) {
ContainerApplication.run(TestApplication.class);
}
}
请求类
import com.linger.container.example.vo.User;
import com.linger.container.web.annotation.CommandHandler;
import com.linger.container.web.annotation.RequestBody;
import com.linger.container.web.annotation.RequestParam;
import com.linger.container.web.entity.HttpResponse;
@CommandHandler(part = "user")
public class UserCommand {
public HttpResponse<String> getUser(@RequestBody User user,
@RequestParam(name="id") Integer id,
@RequestParam(name="name") String name){
return HttpResponse.success(user.getName());
}
}
postman请求截图
query参数
header参数,其中command为对应调用的方法
body参数,这里统一使用json格式
用debug断点拦截
最后附上git地址:https://gitee.com/lingergitee/container.git
注意:该框架还有很多不足,以上代码,为作者个人观点。