5个版本
0.1.7 | 2020年4月10日 |
---|---|
0.1.6 | 2020年4月7日 |
0.1.5 | 2020年4月5日 |
0.1.4 | 2020年4月5日 |
0.1.1 | 2020年4月5日 |
#34 in #api-gateway
32KB
365 行
srvrls
一个轻量级的包装,用于将AWS Lambda用作API网关代理。
安装
Srvrls可在Crates.io或GitHub上获取。
[dependencies]
srvrls = "0.1.7"
或特定分支
[dependencies]
srvrls = { git = "https://github.com/serverlesstechnology/srvrls.git", branch = "master"}
srvrls
我们构建这个库是为了简化构建使用AWS API网关作为AWS Lambda代理的应用程序。
这个库有观点,非常可能不是你自己的。我们的设计优先级很简单
- 减少函数即服务应用程序中的所需样板代码
- 提供有观点的默认值来解决其他开放问题
- 在函数即服务功能提供者和应用程序逻辑之间提供解耦(保持未来支持Google或Azure函数的选项开放)
简而言之,这个包装器将这个
impl Handler<ApiGatewayProxyRequest, ApiGatewayProxyResponse, HandlerError> for App {
fn run(&mut self, event: ApiGatewayProxyRequest, _ctx: Context) -> Result<ApiGatewayProxyResponse, HandlerError> {
match some_function(event) {
Ok(response) => {
ApiGatewayProxyResponse {
status_code: 200,
headers: hashmap!(String::from("Content-Type") => String::from("application/json")),
multi_value_headers: HashMap::new(),
body: Some(response),
is_base64_encoded: None,
}
},
Err(e) => {
ApiGatewayProxyResponse {
status_code: 400,
headers: hashmap!(String::from("Content-Type") => String::from("application/json")),
multi_value_headers: HashMap::new(),
body: Some(e.message),
is_base64_encoded: None,
}
}
}
}
}
变成这个
impl SrvrlsApplication for App {
fn handle(&mut self, event: SrvrlsRequest) -> Result<SrvrlsResponse, SrvrlsError> {
let response = some_function(event)?;
Ok(SrvrlsResponse::ok(response))
}
}
依赖关系
~19MB
~369K SLoC