# Weasel **Repository Path**: KimCarlton/Weasel ## Basic Information - **Project Name**: Weasel - **Description**: Weasel是一个可以使用Lua语言进行Http接口开发的Web服务器。 - **Primary Language**: C++ - **License**: BSD-3-Clause - **Default Branch**: main - **Homepage**: https://gitee.com/KimCarlton/Weasel - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 0 - **Created**: 2021-06-15 - **Last Updated**: 2022-05-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: Http, Lua, WebApi, HttpServer ## README # Weasel介绍 Weasel是一个可以使用Lua语言进行Http接口开发的Web服务器,目前只在CentOS 7.8中进行测试。 # 使用的其他开源库 1.lua https://www.lua.org/ 2.json4lua https://github.com/craigmj/json4lua 3.mysql c api https://dev.mysql.com/doc/c-api/5.7/en/ # 目录介绍 ``` ├── 3rdparty #第三方开源库 │ ├── json4lua #json4lua,用于lua table结构与json数据的相互转换 │ └── lua53 #lua ├── app #app目录 │ └── TemplateApp #模板app ├── docs #文档目录 │ ├── json4lua #json4lua的文档 │ └── lua53 #lua5.3的文档 ├── src #项目源码目录 │ ├── http #http协议封装处理等实现 │ ├── main.cpp #程序入口 │ ├── net #核心网络通讯部分实现 │ └── tools #一些工具功能实现 ├── bin #编译后程序目录 ├── CMakeLists.txt #CMake工程文件 └── LICENSE #许可 ``` # 编译 * 编译前需确认mysql-devel是否安装,可以使用 yum install mysql-devel 命令进行安装。 ``` 1. mkdir build 2. cd build 3. cmake .. 4. make 程序会生成在bin目录中 ``` # App介绍 对于Weasel来说,一个App就是一个项目,每个App都是独立的。 ## 目录 ``` ├── app #app目录 │ └── TemplateApp #app模板工程 │ ├── 3rdparty #第三方库 │ │ └── json.lua #json4lua │ ├── models #模型实体文件夹,用于之后的ORM管理 │ │ └── test_model.lua 测试用实体 │ ├── settings.lua #配置文件 │ ├── urls.lua #路由文件 │ └── views #视图目录 │ └── test.lua #测试用视图 ``` ## 常用命令 ### 创建app ``` Weasel createapp App名称 Weasel createapp test1 ``` ### 启动app ``` Weasel runapp App名称 Weasel runapp test1 ``` ### 停止app ``` Weasel stopapp App名称 Weasel stopapp test1 ``` ## 路由 ```lua --路由文件为 urls.lua --引用test视图 local test = require('views.test') urlpatterns = { --设置test视图路由为/api/test/ ['/api/test/'] = test } ``` ## 视图 ### 视图基础结构 ```lua --视图文件存储在views文件夹下 --views/test.lua --定义test视图 local test = { --对应get方法 get = function(request) local res = response(404, 'error') return res end, --对应post方法 post = function(request) local res = response() res.head = {['asdf'] = 'adsf'} res.content = '3245345345345' return res end } --返回视图 return test ``` ### request结构 * request.url * request.body * request.type * request.head['Content-Type'] * request.param['sectioncode'] ### response结构 * response.status * response.status_info * response.content * response.head['Content-Type'] * response.cookie['sectioncode'] ### 接口权限