# openresty-api
**Repository Path**: fast-dev/openresty-api
## Basic Information
- **Project Name**: openresty-api
- **Description**: openresty web api
1. 基于openresty 封装 api 接口
2. 基于openresty 封装 mvc 模式
- **Primary Language**: Lua
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-09-14
- **Last Updated**: 2023-04-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# lua-api
lua-api 是基于openresty开发的高性能API和操作库,它提供了一种更容易表达的方式来创建集成运行在 openresty 模式下
更多功能可以参考下面的文档。
- [安装与配置](#安装与配置)
- [安装 openresty](#安装-openresty)
- [配置](#配置)
- [DEMO](#DEMO)
## 安装与配置
您必须将这些库 perl 5.6.1+, libpcre, libssl安装在您的电脑之中。 对于 Linux来说, 您需要确认使用 ldconfig 命令,让其在您的系统环境路径中能找到它们。
Debian 和 Ubuntu 用户
推荐您使用 apt-get安装以下的开发库:
```sh
apt-get install libpcre3-dev \
libssl-dev perl make build-essential curl
```
Fedora 和 RedHat 用户
推荐您使用yum安装以下的开发库:
```sh
yum install pcre-devel openssl-devel gcc curl
```
## 安装 openresty
对于一些常见的 Linux 发行版本(Ubuntu、Debian、CentOS、RHEL、Fedora、OpenSUSE、Alpine 和 Amazon Linux), OpenResty® 提供 官方预编译包。确保你首先用这种方式来安装。
对于 Mac OS X 或 macOS 用户,强烈推荐您使用 homebrew 包管理工具安装 OpenResty。可以直接使用下面 这一条命令:
```sh
brew install openresty/brew/openresty
```
如果你之前是从 homebrew/nginx 安装的 OpenResty,请先执行:
```sh
brew untap homebrew/nginx
```
## 配置
在按照上面建议的完成程序的安装之后,下面请配置 nginx.conf
lua_package_path 请配置下载回来的lua-api项目目录下,这边安装目录为 /www/wwwroot/host-lua-api.com
具体路径按自己的配置
```ini
http {
lua_package_path '/www/wwwroot/lua-api-api.com/library/?.lua;;'; # 扩展包 .lua
lua_shared_dict ngx_cache 128m; # cache
lua_shared_dict cache_lock 100k; # lock for cache
}
```
配置域名
```
server {
listen 80;
server_name host-lua-api.com;
location /index {
lua_code_cache off;
content_by_lua_file /www/wwwroot/host-lua-api.com/index.lua;
}
# 开启日志记录
access_log /www/logs/nginx/host-lua-api.log;
error_log /www/logs/nginx/host-lua-api.error.log;
}
```
配置host
```
127.0.0.1 host-lua-api.com
```
配置数据库:
config/database.lua
```ini
return = {
master = {
HOST = "127.0.0.1",
PORT = 3306,
USER = "root",
PASSWORD = "root",
DATABASE = "test",
},
slave = {
HOST = "127.0.0.1",
PORT = 3306,
USER = "root",
PASSWORD = "",
DATABASE = "test",
}
}
```
配置Redis:
config/cache.lua
```ini
return = {
master = {
host = '127.0.0.1',
--端口
port = 6379,
--密码
pass = '',
--超时时间,如果是测试环境debug的话,这个值可以给长一点;如果是正式环境,可以设置为200
timeout = 120000,
--redis的库
database = 1,
},
slave = {
host = '127.0.0.1',
port = 6379,
pass = '',
timeout = 200,
database = 1,
}
}
```
配置 RSA 密钥
如果需要安全的接口校验,请配置RSA做接口数据验证
```ini
return = {
public_key = [[
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvvT5jLIAyiAx3Av/ItsN
KvJMVGjRtb691xyvUlfB1pmSf7DO4WqitW3sYvazJ2MBk5MOTaT8hLAUtqp80vl9
ZtipWQaR27qorgWhi5dYEHt6rWGRoFQxBVw49T++XKnSo7c2JyXZl5FjUiXlF2he
qYoU2hcavCPDle+GOc7q3ohFxR3uwQE66nA2aYbOcx8TaF5aGLAd+4cTuWhNa4c4
L4IQ7jwrZeE35Dux9AOIlqWIsiNc+linDWtFTydQZlrZMtEaOeh0JI0U2nUXPOJA
VjnstohVw6oDXOdC8l5Thpt9ucw4UFGM73d/FJfGu0VZuLzvdr/HSUwZdYMswiKS
PwIDAQAB
-----END PUBLIC KEY-----
]],
private_key = [[-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAvvT5jLIAyiAx3Av/ItsNKvJMVGjRtb691xyvUlfB1pmSf7DO
4WqitW3sYvazJ2MBk5MOTaT8hLAUtqp80vl9ZtipWQaR27qorgWhi5dYEHt6rWGR
oFQxBVw49T++XKnSo7c2JyXZl5FjUiXlF2heqYoU2hcavCPDle+GOc7q3ohFxR3u
wQE66nA2aYbOcx8TaF5aGLAd+4cTuWhNa4c4L4IQ7jwrZeE35Dux9AOIlqWIsiNc
+linDWtFTydQZlrZMtEaOeh0JI0U2nUXPOJAVjnstohVw6oDXOdC8l5Thpt9ucw4
UFGM73d/FJfGu0VZuLzvdr/HSUwZdYMswiKSPwIDAQABAoIBACpFuOi4jwwvzFnW
HgjtTSDwuo0FF0eQjh4Mr5Me8j47iP7TeTjVjmdzihzuWAKkHDk7GLN/jpchE7TM
UQ2zRVt7IyIeHjPyQl0jyftI6anca+/t5XsEqEVzgPhpwA5rWcH8UPShoGW5Pa91
zB0+cZY+hxcwfi6gDDAo8iHh+ISCbCLRylH9wFdeRXgpIB/GBvWkVCa13pHGDui6
5phLpd19D/kQXh7TSgRruBOPsPioCwEtJrMAnky0NF2/y7WH09wjxaqViLFeWfQt
1MhBzeTTJPw2YiYaTNnIUrKO+WWVV4498mVeuwB1eVXuRtjzFJMitrSRatvFerX3
3CixAkECgYEA7pIki+N9HP01i3UBQYWV8VKkDdMq+rM2ChjIArx5yOGLo59Y3PPV
049RoUePGBycHDfCqtcxkIWZFZMHVDxBr00XyTapDlNXzkn+dINIjzlpVW36A75x
f4TLlaorgPjX159Io627JgrO4uFUrWQXEnSNak/dv+Kuep4WgboiA0cCgYEAzOhV
1AL+ZNdxot2tkLkyVwbrCczuSDP6WeZ4WrhUZuKgbsC68rQVinNyEUBB0qZYIN0M
WlS2jsdM6MQG+S02ShVNb4hzE4nL1qXIbEUGNWgtg+KBgODK64b9LVZJDnfD1ypM
O7bTGH299vqXgEMsED57JrnnDOKfMzbOPr/GxUkCgYEA04rC3UfaqNndoMsfUfoh
+tpMnfWhJqvCPzG6KLL3Sii0qWGiaknMUMvElj3dpIO56UuIUfR+/qd4FqlI1miX
1dmGPeU6AnnkYgc6mhXPQTCnNhlOmANGoMwfuZYq/TGqMogK4Rgr2o+643LqotUd
oD+5JYusFXnrPM7xJhbmEgECgYBpUPDsKy29fs41O2K+A7HP8QpU2zONgMmn80Dg
v+UBjHGQ+xYbMFvx8Swrma87KawaGAMFWo0KDX2GFVrQL2C76v8F2EftPuG5zTOa
ElACmyzpoD2Xk/I35AW0i6i4+u15ZZAREQKmj9pXWq0Li3rWTobVfK84fDH/DKgs
sDzloQKBgFP1NBGhRIB1Du/100wA5eol226UNP9FoONFUAVvLJdK1UydbWdCjYvh
AjFalFJhH5Dq4bntYcvo5szJTl7wZ2B/UwGd7/m2tmyca96jblysQoh0JKfi+Tpl
Yz+YGT2uVPF+EA/mUrSAN/S0m5Ngvsy96Ad2QVoRiTPHdq9gDSqo
-----END RSA PRIVATE KEY-----]]
}
```
## DEMO
1.获取GET请求数据
```sh
-- 引入请求层
local request = require "request"
local args = request:get()
-- 返回数据
response:success("请求数据!",args)
```
2.获取POST请求数据
```sh
-- 引入请求层
local request = require "request"
-- 引入返回层
local response = require "response"
local args = request:post()
-- 返回数据
response:success("请求数据!",args)
```
3.获取header参数
```sh
-- 引入请求层
local request = require "request"
-- 引入返回层
local response = require "response"
local header = request:header('token')
-- 返回数据
response:success("请求数据!",header)
```
4.数据签名
```sh
-- 引入请求层
local request = require "request"
-- 引入返回层
local response = require "response"
-- 引入RSA
local rsa = require "rsa"
-- 引入RSA密钥文件
local rsaconf = require "rsaconf"
local args = request:post()
-- 获取数据签名
local sign = response:getSign(args, rsaconf.public_key)
-- 校验数据签名
local decrypted = response:getSignVerify(args, args['sign'], rsaconf.private_key)
response:success("请求数据!", decrypted)
```
## 文档
PHP开发技术交流(QQ群 368868750)
[](https://qm.qq.com/cgi-bin/qm/qr?k=rfRumoZ0fxUN4TdshfjkxiHximnHVSzb&jump_from=webapi)