Openrestyベースのweb apiフレームワーク
Openrestyで構築された簡易ウェブapiフレームワークで、後で使用するときにプロジェクト構造を迅速に生成します.
プロジェクトアドレス
ここをクリック
ディレクトリ構造
config、controller、libs、modelの4つのディレクトリを含む構造 configプロファイルディレクトリapp、redis、database関連構成用 appアプリケーション関連 データベース関連 redis構成 libsディレクトリlibsディレクトリの下にある共通のモジュールライブラリは、redis、db、request、responseなどの を含む. controllerディレクトリこれはコントローラディレクトリで、中にはベースクラスBaseがパッケージされています.lua、ビジネスコントローラはこれを継承すればよく、基本的なビジネスコントローラコードは以下の self.requestはselfのような要求関連パラメータを取得する.request.query.xxはgetパラメータ、selfを取得する.request.body.xxはpostパラメータ、selfを取得する.request.headers.xx取得ヘッダパラメータ等 self.responseは応答結果を出力し、主にselfがある.response:json()はdata結果とselfを返す.response:redirect()ジャンプ、self.response.get_body()応答結果の取得など開発を容易にするためにBaseにresponseをカプセル化し,self:json(),self:error(code,message)の2つのショートカットメソッド が含まれる. self.redisはselfを含むredisを用いることができる.redis:set,self.redis:get,self.redis:hset,self.redis:hgetなど、具体的に使用できる関数はlibs/redisを参照することができる.luaファイルの15~72行 self.コントローラ現在のコントローラ名 を取得 self.Action現在のaction操作名 を取得する
modelディレクトリモデルに関連する、操作を容易にするためにBaseベースクラスもカプセル化され、ビジネスmodelは継承するだけで create(data)追加レコード delete(id)削除レコード update(data,id)修正記録 get()、all()フィルタ記録 where()フィルタ条件方法 columns()どのカラムを検索するかを設定する方法 orderby()ソートの設定方法 count()データの合計エントリ数を検索する方法 同時にluaはまた、複雑なクエリーを容易にするためにsqlを実行する方法をカスタマイズする方法を提供しています. query()
クイックスタート nginx.conf追加は、次のコード と同様である.追加コントローラコントローラコントローラディレクトリにuserを追加する.lua model を追加コントローラmodel を使用
Modelパッケージのショートカット方法の説明追加 削除 プライマリ・キー削除 where条件に従って を削除する.
修正 プライマリ・キーに従って を変更する. where条件に従って を修正する
検索 レコード を検索複数のレコードを検索 その他の方法の説明 ルックアップデータ数 ソート 指定フィールドを検索する(指定フィールドを使用しない場合、すべてのフィールドを検索する) where条件に従って を検索するカスタム実行sql
コマンドライン
コントローラコントローラコントローラやモデルモデルモデルの迅速な生成を容易にするために、コマンドラインを開発しました.コマンドラインはluajitで作成され、luajitを環境変数に入れる必要があります.
Windowsのコマンドはコントローラを生成し、コントローラディレクトリの下 に自動的に生成する. modelを生成し、自動的にmodelディレクトリの下 に生成する.
プロジェクトアドレス
ここをクリック
ディレクトリ構造
config、controller、libs、modelの4つのディレクトリを含む構造
return {
default_controller = 'home', --
default_action = 'index', --
}
local mysql_config = {
timeout = 5000,
connect_config = {
host = "127.0.0.1",
port = 3306,
database = "demo",
user = "root",
password = "a12345",
max_packet_size = 1024 * 1024
},
pool_config = {
max_idle_timeout = 20000, -- 20s
pool_size = 50 -- connection pool size
}
}
return {
host = "127.0.0.1", -- redis host
port = 6379, -- the port
max_idle_timeout = 60000, -- max idle time
pool_size = 1000, -- pool size
timeout = 1000, -- timeout time
db_index= 2, -- database index
}
-- home.lua
local Base = require("controller.base")
local Home = Base:extend()
function Home:index()
self:json({data={}})
end
の上のコードでコントローラを実現し、アクセスパスhostname://home/index要求urlルールはhostname+controllerフォルダの下のファイル名+/+ファイルの中のメソッド名(Baseモジュールを必ず継承することに注意)controllerの中でいくつかの基本的な属性を提供しますself:json({data=self.redis:get("test")}) -- data
self:error(2," ") -- ,
が返す構造にはdata,code,messageフィールド{"data":{"data":["BBBBB","B","AAAAA","A","BBBBB","B","AAAAA","A"]},"message":"","code":" "}
-- good.lua
local Base = require "model.base"
local Good = Base:extend() -- Base
return Good("test",'lgid') -- , ( id)
Baseになる.luaパッケージのベースクラスは、単一テーブルの削除と変更の方法を提供します.クイックスタート
worker_processes 1;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
lua_package_path 'E:/openresty/demo/src/?.lua;;';
server {
charset utf-8;
listen 8080;
location = /favicon.ico {
log_not_found off;#
access_log off;# access.log
}
location / {
default_type text/html;
content_by_lua_file "E:/openresty/demo/src/main.lua";
}
}
}
local Base = require("controller.base")
local User = Base:extend()
function User:index()
self:json({
data={
name = "hello world"
}
})
end
return User
local Base = require "model.base"
local User = Base:extend()
return User("sls_p_user",'suid')
local userModel = require('model.user')
function User:index()
self:json({
data={
name = userModel:columns('rname'):get(1)
}
})
end
Modelパッケージのショートカット方法の説明
local data = {
name = "test",
pwd = 123
}
local insertId = userModel:create(data)
local affect_rows = userModel:delete(2)
local affect_rows = userModel:where("name","=",3):delete()
local affect_rows = userModel:update(data,2)
local data = {
suid = "1", -- data ,
name = "hello ",
}
local affect_rows = userModel:update(data)
local affect_rows = userModel:where("name","=",3):update(data)
local info = userModel:where("name","=",3):get() -- where
local info = userModel:get(1) --
local info = userModel:columns('suid,name'):get(1) -- ,
local info = userModel:columns({'suid','name'}):get(1) -- , table
local list = userModel:where("name","=",3):all() -- where
local list = userModel:columns('suid,name'):all() -- ,
local list = userModel:columns({'suid','name'}):all() -- , table
local count = userModel:where("name","=","json"):count()
local list = userModel:where("name","=",3):orderby("id"):all()
local list = userModel:where("name","=",3):orderby("name","asc"):orderby("id","desc"):all() --
local list = userModel:columns('suid,name'):all() --columns , table
local list = userModel:columns('suid,rname'):where("suid","
--
local sql = "select su.*,c.logincount from sls_p_user su join c_user c on su.suid=c.suid where su.suid=2"
local result = userModel:query(sql)
--
local sql = "select * from sls_p_user where suid=? and username=?"
local result = userModel:query(sql,{1,"json"})
コマンドライン
コントローラコントローラコントローラやモデルモデルモデルの迅速な生成を容易にするために、コマンドラインを開発しました.コマンドラインはluajitで作成され、luajitを環境変数に入れる必要があります.
./jframe -h
jframe v0.1.1, a Lua web framework based on OpenResty.
Usage: jframe COMMAND [OPTIONS]
Commands:
controller [name] Create a new controller
model [name] [table] Create a new model
version Show version of the framework
help Show help tips
Windowsのコマンドは
luajit ./jframe -h
jframe controller controllerName
jframe model modelName -- , model modelname
jframe model modelName table-- model