# sardine
**Repository Path**: codingseed/sardine
## Basic Information
- **Project Name**: sardine
- **Description**: 高性能微服务框架 —— 沙丁鱼,小而迅速,多而勇猛。sardine.ibruce.info
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 23
- **Created**: 2018-08-19
- **Last Updated**: 2021-11-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#Sardine
> **整个项目未完成,尚处于开发中,敬请期待。。。**
轻量级高性能微服务框架,本项目是 Netty5+Java8 的 [Sinatra](http://www.sinatrarb.com) 实现。

> 沙丁鱼,世界重要海洋经济鱼类。硬骨鱼纲鲱形目鲱科,形态延长,侧扁,腹部具棱鳞。小者二寸,大者尺许,密集群息,沿岸洄游。
简介
---------------------------------------------------------------------------------
###超轻量级的Java 微服务框架
- Java8:函数式、Lambda表达式、Stream流式操作
- Netty5:事件驱动、异步高性能、高可靠性
- 极简:全部源码只有100k+,仅依赖Netty
###一行代码启动一个HTTP 服务
```
public static void main(String[] args) {
get("/", () -> "hello sardine.");
}
```
**搞定!** 现在,打开您的浏览器:
>http://localhost:9527/
##入门
---------------------------------------------------------------------------------
###依赖
```
sardine
sardine-all
${sardine-version}
```
###启动
```
import static sardine.Sardine.*;
public class SardineServerTest {
public static void main(String[] args) {
port(9527);
get("/", () -> "hello sardine.");
}
}
```
###Route
Route 由三部分组成:
- 动作:http 动作的一种(GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE, CONNECT, PATCH)
- 路径:http 请求路径(/home, /books/:id, /books/:author)
- 函数:消费http request,生产http response(() -> {}, (request, response) -> {})
此外,还可以有:
- 条件:条件函数 ((request) -> {})
- 类型:即 http accept type
```
get("/books/:author", (request, response) -> {
return "hello sardine";
});
post("/book", (request, response) -> {
return "ok";
});
put("/books/:id", (request, response) -> {
return "updated";
});
delete("/books/:id", (request, response) -> {
return "deleted";
});
```
// TODO
restful verb 介绍
###Parameters
###Named parameters
###Wildcards parameters
###Query parameters
###条件Condition
条件函数
```
get("/hello", request -> "127.0.0.1".equals(request.ip()), (request, response) -> {
return "hello sardine.";
});
```
###Request
```
request.host();
request.port();
request.method();
request.path();
request.scheme();
request.contentType();
request.accept();
request.ajax();
request.headers();
request.headers("foo");
request.cookies();
request.cookies("name");
request.params();
request.params("foo");
request.paramsOptional("foo")
request.paramsOrElse("foo")
request.splats()
request.splatsAsList()
request.splatsFirst()
request.splatsLast()
request.queryParams();
request.queryParams("foo");
request.multiQueryParams("foo");
request.body();
request.bodyAsByte();
request.bodyLength();
```
###Response
```
response.status(404);
response.header("foo", "bar");
response.cookie("foo", "bar");
response.contentType("application/json");
response.body();
response.body("are you ok ?");
response.redirect("/login");
response.file("/hello.html");
```
###Cookie
###Halt
```
halt();
halt(403);
halt("a u ok?");
halt(503, "i got u!");
```
###Filter
###Redirect
###Rewrite
###Exception
###Static assets
```
staticFileLocation("/resources");
externalStaticFileLocation("/var/www/resources");
```
###ResponseTransformer
json
###MVC
###Gzip
###日志
###监控
##示例
---------------------------------------------------------------------------------
###1、HelloSardine
最简版:
```
import static sardine.Sardine.*;
public class HelloSardine {
public static void main(String[] args) {
get("/", () -> "hello sardine.");
}
}
```
> Run:http://localhost:9527/
Java8 语法糖版:
```
import static sardine.Sardine.*;
public class HelloSardine {
public static void main(String[] args) {
get("/", new HelloSardine()::hello);
}
public String hello() { return "hello sardine"; }
}
```
> Run:http://localhost:9527/
```
import static sardine.Sardine.*;
public class HelloSardine {
public static void main(String[] args) {
get("/", HelloSardine::hello);
}
public static String hello() { return "hello sardine"; }
}
```
> Run:http://localhost:9527/
实例
---------------------------------------------------------------------------------
###Demo工程
###真实案例
不蒜子:
压力测试
---------------------------------------------------------------------------------
ab
参考资料
---------------------------------------------------------------------------------