项目作者: timeloveboy

项目描述 :
萌萌哒的java restful api开发框架
高级语言: Java
项目地址: git://github.com/timeloveboy/moeserver.git
创建时间: 2016-05-30T10:43:57Z
项目社区:https://github.com/timeloveboy/moeserver

开源协议:

下载


moeserver

  1. ______ _____
  2. |_ \ / _|
  3. | |\ \ / /| | _____ _____
  4. | | \ \__/ / | | / _ \ / ____\
  5. _| |_ \____/ _| |_ | |_| | | ____ |
  6. |_____| |_____| \_____/ \_____|
  7. Sun Oct 23 22:31:03 CST 2016 Running at:0.0.0.0/0.0.0.0:8090

萌萌哒的java restful api框架

  • 0.0.1 采用了sun.HttpServer线程模型
  • 0.0.2 采用了netty4引擎和jetty引擎
  • 0.1.0 改进了部分方法,增加了utils库
  • 0.1.1 移除了jetty

using maven

  • 0.0.1 采用了sun.HttpServer线程模型

    1. <dependency>
    2. <groupId>com.github.timeloveboy</groupId>
    3. <artifactId>moeserver</artifactId>
    4. <version>0.1.0</version>
    5. </dependency>
  • 0.0.2 添加了netty4和jetty引擎

    1. <dependency>
    2. <groupId>com.github.timeloveboy</groupId>
    3. <artifactId>moeserver</artifactId>
    4. <version>0.0.2</version>
    5. </dependency>
  • 0.1.0 添加了staticFileHandler,帮助web站点处理静态文件

    1. <dependency>
    2. <groupId>com.github.timeloveboy</groupId>
    3. <artifactId>moeserver</artifactId>
    4. <version>0.1.0</version>
    5. </dependency>

    使用说明

  • 1.指定您的modulepackage路径和端口号

  • 2.在modulepackage中,每个类均继承自 extends DefaultHandle
  1. public class Buy extends DefaultHandle {
  2. @Override
  3. public void GET(IHttpRequest req, IHttpResponse resp) throws IOException {
  4. resp.write("get");
  5. }
  6. }
  1. public class app {
  2. public static void main(String[] args) throws Exception {
  3. Server s = Server.getInstance();
  4. s.RegisterDriver(new nettyServer().setBufMax(1024 * 1));
  5. //s.RegisterDriver(new sunServer());
  6. //s.RegisterDriver(new jettyServer());
  7. s.RegisterModulePath("webdemo.routers").Static("/static", "/CODE/github.com/timeloveboy/moeserver").SetPort(8098);
  8. s.Run();
  9. }
  10. }

现在,请访问http://localhost:8090/Buy

函数列表

Server

  1. Server s = Server.getInstance();
  2. s.Static("/static", "/CODE/github.com/timeloveboy/moeserver")
  3. s.RegisterDriver(new nettyServer());
  4. s.RegisterDriver(new sunServer());
  5. s.RegisterDriver(new jettyServer());
  6. s.RegisterModulePath("webdemo.routers").SetPort(8090);
  7. s.Run();

Handle

请覆盖DefauldHandle类的以下方法

  • GET
  • POST
  • PUT
  • HEAD
  • DELETE

moeserver与restful风格的api设计规范可以完美搭配。
您可以:

  • 在get中执行数据的select操作
  • 在post中执行insert操作
  • 在put中执行update操作
  • 在delete中执行delete操作。

Request

  1. public InetSocketAddress getRemoteAddress()
  2. public InputStream getBody()
  3. public String getRequestMethod()
  4. public URI getUrl()
  5. public Map getHeaders()
  6. public Map<String, String> getCookies()

Response

  1. public IHttpResponse code(Integer responsecode)
  2. public IHttpResponse header(String key, String value)
  3. public IHttpResponse setcookie(String key, String value)
  4. public void write(String data)
  5. public void write(byte[] data)
  6. public void close()

不服跑个分

机器

  1. ubuntu 16.04
  2. 15.7 GiB
  3. Intel® Xeon(R) CPU X5650 @ 2.67GHz × 12
  4. 64

c=10 n=10000

  1. localhost:~ timeloveboy$ ab -n 10000 -c 10 http://localhost:8090/I
  • sun.线程模式 12688.99 [#/sec] (mean)

  • netty事件模式 19350.82 [#/sec] (mean)

  • jetty 16883.56 [#/sec] (mean)

  • golang 19955.14 [#/sec] (mean)

    c=100 n=100000

  1. localhost:~ timeloveboy$ ab -n 100000 -c 100 http://localhost:8090/I
  • sun.线程模式 10409.97 [#/sec] (mean)

  • netty事件模式 18835.13 [#/sec] (mean)

  • jetty 18025.67 [#/sec] (mean)

  • golang 20826.30 [#/sec] (mean)