【解决方案】Marten支持库
近期,封装了Marten支持库,该库与Gin库一样,均为web库,Marten 在保持零依赖的同时,性能与 Gin 和 Echo 相当。下面是与其他库的比较。使用方法如下:
<火山程序 类型 = "通常" 版本 = 1 />
变量 app <参考 类型 = Marten应用程序>
变量 router <参考 类型 = Marten路由类>
变量 api <参考 类型 = Marten路由组类>
app = Marten应用程序.创建 ()
users = 文本到用户哈希表.创建 (0)
router = app.取路由 ()
变量 logger <类型 = Marten日志配置类>
logger = Marten日志配置类.取默认配置 ()
logger.启用颜色 = 真
// logger.启用JSON格式 = 真
router.使用 (Marten中间件类.请求ID中间件 (), Marten中间件类.日志中间件2 (logger), Marten中间件类.恢复中间件 (), Marten中间件类.跨域资源共享中间件 (Marten跨域资源共享配置类.取默认配置 ()))
router.注册GET2 ("/health")
{
局部返回 (Marten路由类.取上下文 ().发送成功 (Marten哈希表.创建哈希表 ("status", "healthy")))
}
api = router.创建路由组 ("/api/v1")
api.注册GET ("/users", Marten处理程序类.创建 (列表))
api.注册GET ("/users/:id", Marten处理程序类.创建 (取用户))
api.注册POST ("/users", Marten处理程序类.创建 (添加用户))
api.注册PUT ("/users/:id", Marten处理程序类.创建 (更新用户))
api.注册DELETE ("/users/:id", Marten处理程序类.创建 (删除用户))
app.运行2 (, 3 * 时间段.秒)
方法 列表 <公开 类型 = 错误接口 折叠>
参数 上下文 <类型 = Marten上下文>
{
usersMu.加读锁 ()
延迟执行 ()
{
usersMu.解读锁 ()
}
变量 list <类型 = 用户数组类>
变量 u <类型 = 用户类>
list = 用户数组类.创建 (0)
users.值遍历循环 (u)
{
list.加入成员 (u)
}
返回 (上下文.发送成功 (Marten哈希表.创建哈希表 ("users", list).添加 ("total", list.取成员数 ())))
}
方法 取用户 <公开 类型 = 错误接口 折叠>
参数 上下文 <类型 = Marten上下文>
{
变量 id <类型 = 文本型>
变量 user <类型 = 用户类>
id = 上下文.取请求路径参数 ("id")
usersMu.加读锁 ()
user = users.读 (id)
usersMu.解读锁 ()
如果 (user == 空对象)
{
返回 (上下文.发送未找到 ("未找到数据"))
}
否则
{
返回 (上下文.发送成功 (user))
}
}
方法 添加用户 <公开 类型 = 错误接口 折叠>
参数 上下文 <类型 = Marten上下文>
{
变量 input <类型 = 输入验证类>
变量 错误 <类型 = 错误接口 值 = 空对象>
上下文.请求绑定验证2 (input, 错误)
{
如果 (input.姓名 == "")
{
Marten上下文.置返回 (Marten绑定错误类.创建 ("姓名必填").取错误 ())
}
否则 (input.邮件 == "")
{
Marten上下文.置返回 (Marten绑定错误类.创建 ("邮件必填").取错误 ())
}
否则
{
Marten上下文.置返回 ()
}
}
如果 (错误 != 空对象)
{
返回 (上下文.发送错误请求 (错误.信息))
}
usersMu.加锁 ()
变量 id <类型 = 文本型>
id = 取格式文本 ("%d", nextID)
nextID = nextID + 1
变量 user <类型 = 用户类>
user.编号 = id
user.姓名 = input.姓名
user.邮件 = input.邮件
user.创建时间 = 取现行时间 ()
users.写 (id, user)
usersMu.解锁 ()
返回 (上下文.发送已创建 (user))
}
方法 更新用户 <公开 类型 = 错误接口 折叠>
参数 上下文 <类型 = Marten上下文>
{
变量 input <类型 = 输入验证类>
变量 错误 <类型 = 错误接口 值 = 空对象>
变量 id <类型 = 文本型>
变量 user <类型 = 用户类>
id = 上下文.取请求路径参数 ("id")
usersMu.加读锁 ()
user = users.读 (id)
usersMu.解读锁 ()
如果 (user == 空对象)
{
返回 (上下文.发送未找到 ("未找到数据"))
}
错误 = 上下文.请求绑定 (input)
如果 (错误 != 空对象)
{
局部返回 (上下文.发送错误请求 (错误.信息))
}
如果 (input.姓名 != "")
{
user.姓名 = input.姓名
}
如果 (input.邮件 != "")
{
user.邮件 = input.邮件
}
usersMu.加锁 ()
users.写 (id, user)
usersMu.解锁 ()
返回 (上下文.发送成功 (user))
}
方法 删除用户 <公开 类型 = 错误接口 折叠>
参数 上下文 <类型 = Marten上下文>
{
变量 id <类型 = 文本型>
变量 user <类型 = 用户类>
id = 上下文.取请求路径参数 ("id")
usersMu.加锁 ()
user = users.读 (id)
如果 (user != 空对象)
{
users.删除 (id)
}
usersMu.解锁 ()
如果 (user == 空对象)
{
返回 (上下文.发送未找到 ("数据未找到"))
}
返回 (上下文.发送无内容 ())
}
:):):)太厉害啦,支持!~
太厉害啦,支持!~
页:
[1]