Summer Project

Summer是一个用于学习交流,基于Netty4.x的简单mvc库。

使用

  • 快速开始
public class Application {

    public static void main(String[] args) {
Summer.me()
.before("/example/*", (request, response) -> {
log.debug("path: {}", request.path());
// pass
return true;
})
.get("/example", (request, response) -> response.json(Result.of("summer *_*!!!")))
.get("/example/:id", (request, response) -> response.text(request.paths().get("id")))
.post("/example/:id", (request, response) -> response.text(request.paths().get("id")))
.put("/example/:id", (request, response) -> response.text(request.paths().get("id")))
.delete("/example/:id", (request, response) -> response.text(request.paths().get("id")))
.listen(9000)
.serve();
} }
  • 自定义
public class Application {

    public static void main(String[] args) {
ExampleController controller = new ExampleController(); // 获取一个summer实例
Summer summer = Summer.me(); Router router = summer.router(); // 自定义notFound处理
router.notFound((request, response) -> response.text("404")); // 自定义错误处理
router.failureHandler((request, response, t) -> response.text("500")); // 注册路由
router.get("/example/text", controller::text);
router.get("/example/json", controller::json); // http服务监听9000端口,并启动服务
summer.listen(9000).serve();
} }

关于

Request

命名参数

显然,:name就是一个命名参数,可以通过request.paths().get("name")方法获取命名参数。

模式匹配: /user/:name

/user/zhangsan             匹配
/user/lisi 匹配
/user/wangwu/zhaoliu 不匹配
/user/ 不匹配

注意: :name name 必须为字母[a-zA-Z], 否则视为精确匹配!

前置钩子

Ant风格:

  • ? 匹配一个字符
  • * 匹配一个或多个字符
  • ** 匹配一个或多个目录

请求体

request.body()方法支持下列Content-Type:

  • multipart/form-data
  • application/x-www-form-urlencoded

对于application/json请求头, 使用request.json()方法即可。

文件上传

  • request.files()
  • request.file(name)

拿到FileUpload对象,操作文件。

Response

写响应

  • response.text(text)
  • response.json(json)

Content-Type(text/plainapplication/json)分别会被添加到响应头。

文件下载

使用下面的方法:

  • response.sendFile(file)

重定向

response.redirect(targetUrl)将会设置http状态码为302,并添加Location到响应头。

静态资源

Summers.summer()
// 静态资源
.staticFile("/static", "/developer/Code/summer")
.listen(9000)
.serve();

例如,http://ip:9000/static/some.txt将会被映射为本地文件路径/developer/Code/summer/some.txt

例子

这里

特别感谢

Summer Project的更多相关文章

  1. .NET Core系列 : 2 、project.json 这葫芦里卖的什么药

    .NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...

  2. 记一个mvn奇怪错误: Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file

    我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for requi ...

  3. ASP.NET Core project.json imports 是什么意思?

    示例代码: "frameworks": { "netcoreapp1.0.0": { "imports" : "portable- ...

  4. PhpStorm和WAMP配置调试参数,问题描述Error. Interpreter is not specified or invalid. Press “Fix” to edit your project configuration.

    PhpStorm和WAMP配置调试参数 问题描述: Error. Interpreter is not specified or invalid. Press “Fix” to edit your p ...

  5. Crystal Clear Applied: The Seven Properties of Running an Agile Project (转载)

    作者Alistair Cockburn, Crystal Clear的7个成功要素,写得挺好. 敏捷方法的关注点,大家可以参考,太激动所以转载了. 原文:http://www.informit.com ...

  6. CSharpGL(20)用unProject和Project实现鼠标拖拽图元

    CSharpGL(20)用unProject和Project实现鼠标拖拽图元 效果图 例如,你可以把Big Dipper这个模型拽成下面这个样子. 配合旋转,还可以继续拖拽成这样. 当然,能拖拽的不只 ...

  7. Microsoft Visual Studio 2013 — Project搭载IIS配置的那些事

    前段时间在改Bug打开一个project时,发生了一件奇怪的事,好好的一直不能加载solution底下的这个project,错误如下图所示:大致的意思就是这个project的web server被配置 ...

  8. My First Android Application Project 第一个安卓应用

    一.前言: 安卓(Android):是一种基于Linux的自由及开放源代码的操作系统,主要用在移动设备上,如手机.平板电脑.其他的设备也有使用安卓操作系统,比如:电视机,游戏机.数码相机等等. 二.具 ...

  9. ASP.NET Core中的project.json何去何从?

    Shawn Wildermuth (https://wildermuth.com/2016/05/12/The-Future-of-project-json-in-ASP-NET-Core) If y ...

  10. 【原创】记一次Project插件开发

    一.开发背景 最近在使用微软的Office Project 2010 进行项目管理,看到排的满满的计划任务,一个个地被执行完毕,还是很有成就感的.其实,不光是在工作中可以使用Project进行项目进度 ...

随机推荐

  1. TensorFlow在Windows上的CPU版本和GPU版本的安装指南(亲测有效)

    安装说明 平台:Window.Ubuntu.Mac等操作系统 版本:支持GPU版本和CPU版本 安装方式:pip方式.Anaconda方式 attention: 在Windows上目前支持python ...

  2. redis 分布式锁流程图

  3. Faster R-CNN

    1.R-CNN R-CNN网络架构图 R-CNN网络框架流程 1)原图像经过 selective search算法提取约2000个候选框 2)候选框缩放到同一大小,原因是上图的ConvNet需要输入图 ...

  4. linux下双网卡双网关配置

    要求: eth0:192.168.100.203 连接内网,网关为192.168.100.1.需要和192.168.10.0.192.168.12.0.192.168.100.0.10.2.2.0.1 ...

  5. 【easy】Number of Segments in a String 字符串中的分段数量

    以空格为分隔符,判断一个string可以被分成几部分. 注意几种情况:(1)全都是空格 (2)空字符串(3)结尾有空格 思路: 只要统计出单词的数量即可.那么我们的做法是遍历字符串,遇到空格直接跳过, ...

  6. windows2012服务器中安装php7+mysql5.7+apache2.4环境

    1.下载安装apache.2.4 https://home.apache.org/~steffenal/VC14/binaries/httpd-2.4.38-win64-VC14.zip 解压到d盘的 ...

  7. PHP常用方法整理

    最近开始写PHP项目,各种常用的方法简单整理一下,以备后用. 1.  Xml转Json json_decode(json_encode(simplexml_load_string($xml, 'Sim ...

  8. git在项目中的实际运用

    项目中只运用git版本管理的情况下: 1.创建分支命令: git branch (branchname) 切换分支命令: git checkout (branchname) 当你切换分支的时候,Git ...

  9. CF1093

    题解: D: 比较显然这个图得是二分图才行 然后每个二分图上的方案是$(2^a+2^b) (a,b是两种颜色的个数)$ E: 我tm就不该先写bitset的 正解和bitset都很好想 因为是个排列, ...

  10. 安装SSL证书 and 根域名跳转www域名

    1.安装自签证书 自签证书也就是不被公网认可的证书,可在局域网内进行签名认证,其12306也是自签证书,通过证书+nginx代理web服务器 可以实现https连接  一.使用OpenSSL创建证书 ...