当前位置:网站首页>How to implement Lua entry of API gateway
How to implement Lua entry of API gateway
2022-07-06 23:25:00 【Fried chicken and spicy chicken 123】
structure Lua Project environment
LuaJIT Is relative to Lua More mainstream existence
stay IDEA Add EmmyLua Plug in is ready to use ,
idea function lua Script
Handwritten code on
Basic grammar
You can refer to the following information Lua Introduction reference
Print function
- io.write
print("123")
io.write('1234')
loop
There are two kinds of circulation
- for loop
for i = 1, 10 do
if i % 2 == 0 then
io.write(" even numbers ", i, '\n')
else
io.write(' Odd number ', i, "\n")
end
end
- while loop
a = 1
while true do
if a % 2 == 0 then
io.write(" even numbers ", a, '\n')
else
io.write(' Odd number ', a, "\n")
end
a = a + 1
end
This grammar and Bash shell The script is a little similar ,end and then Key words .
Conditions
- if - else - end
if a % 2 == 0 then
io.write(" even numbers ", a, '\n')
else
io.write(' Odd number ', a, "\n")
end
- if - elseif - end
if a > 10 and a % 8 == 0 and not (a % 16 == 0) then
break
elseif a > 10 and a % 8 == 0 and (a % 16 == 0) then
io.write(a, "+", '\n')
end
Default data structure
table, Is a generic like structure , That is, you can put anything in it , Represents a normal array , The symbol table , aggregate , Record , graphics , Trees, etc , And realize associative array .
c = table
table.insert(c,'a')
table.insert(c,'b')
table.insert(c,'c')
print(c[0],c[1],c[2],c[3])
According to the experimental results , Find out table It seems that the default from offset is 1 Start filling . let me put it another way ,table Itself is from the index 1 At the beginning .
except table Beyond this complex structure ,lua There are also some basic data types , as follows :
Special operators
lua There are two unusual operators , They are string concatenation characters … and Take string length characters #
c = 'dsadsadsadsadqewdxadssadsasdsasdsadsad'
d = 'dsarewfdsdsasdad'
print(c..d)
print(#c,#d,#(c..d))
function
Support to define template functions
function demo(func, value)
value = value * value
func(value)
end
function demo1(value)
print('-',value,'-')
end
function demo2(value)
print('=',value,'=')
end
demo(demo1,2)
demo(demo2,2)
there demo Template function ,demo1 and demo2 Is a subfunction , A subfunction can be a parameter of a function .
String manipulation
string The method inside
iterator
Iterators are required to traverse an array or collection , and lua The iterator function provided in is ipairs, In terms of name , It's a binary structure .
OpenResty The method in
If in OpenResty and Lua The same method provided in , Then be sure to use OpenResty Of , because OpenResty It's synchronous and non blocking , however Lua The library itself may be blocked , It will greatly reduce the performance .
obtain http Request related methods
-- obtain uri
real = ngx.var.uri
-- To obtain parameters
local query = ngx.req.get_uri_args()
-- obtain headers
local headers = ngx.req.get_headers()
-- obtain cookies
local cookies = ngx.ctx.__cookies__
-- Get sources IP
real = ngx.var.remote_addr
-- obtain UA
real = ngx.var.http_user_agent
-- Access method
local method = ngx.req.get_method()
-- obtain post Parameters
ngx.req.read_body()
local post_params, err = ngx.req.get_post_args()
-- obtain referer
real = ngx.var.http_referer
-- obtain host
real = ngx.var.host
Some useful libraries
- resty.dns.client
- resty.dns.balancer
- resty.http
- resty.jwt
matters needing attention
- Local variables use local Keyword to define . Here, too Python It's kind of like , however python Generally, you specify function variables as global variables (global), And here we use local To define local variables .
- Lua The function parameter of can be method , This and JS A bit similar .
Okay , With Lua Knowledge and open source API Gateway knowledge , You can start writing your own API Gateway , My ultimate goal is to write an anti crawl system , Interested friends can pay attention to , I will keep updating .
边栏推荐
- JS addition, deletion, modification and query of JSON array
- Is "applet container technology" a gimmick or a new outlet?
- Flutter life cycle
- Ajout, suppression et modification d'un tableau json par JS
- JDBC programming of MySQL database
- 面试题:AOF重写机制,redis面试必问!!!
- 安全保护能力是什么意思?等保不同级别保护能力分别是怎样?
- Face recognition class attendance system based on paddlepaddle platform (easydl)
- AI表现越差,获得奖金越高?纽约大学博士拿出百万重金,悬赏让大模型表现差劲的任务...
- Cloud native technology container knowledge points
猜你喜欢
室内LED显示屏应该怎么选择?这5点注意事项必须考虑在内
Thinkphp5 multi table associative query method join queries two database tables, and the query results are spliced and returned
Today's sleep quality record 78 points
UE4 blueprint learning chapter (IV) -- process control forloop and whileloop
浅谈现在的弊端与未来的发展
[launched in the whole network] redis series 3: high availability of master-slave architecture
AI金榜题名时,MLPerf榜单的份量究竟有多重?
Cloud native technology container knowledge points
今日睡眠质量记录78分
Coscon'22 community convening order is coming! Open the world, invite all communities to embrace open source and open a new world~
随机推荐
AI金榜题名时,MLPerf榜单的份量究竟有多重?
Dayu200 experience officer runs the intelligent drying system page based on arkui ETS on dayu200
【Unity】升级版·Excel数据解析,自动创建对应C#类,自动创建ScriptableObject生成类,自动序列化Asset文件
None of the strongest kings in the monitoring industry!
Devsecops software R & D security practice - release
浅谈现在的弊端与未来的发展
每人每年最高500万经费!选人不选项目,专注基础科研,科学家主导腾讯出资的「新基石」启动申报...
AcWing 4299. Delete point
Hard core observation 545 50 years ago, Apollo 15 made a feather landing experiment on the moon
Interview question: AOF rewriting mechanism, redis interview must ask!!!
Two week selection of tdengine community issues | phase II
Redis persistence mechanism
(shuttle) navigation return interception: willpopscope
Stop saying that microservices can solve all problems
Flutter life cycle
Ajout, suppression et modification d'un tableau json par JS
自动更新Selenium驱动chromedriver
Implementation steps of mysql start log in docker
Why are some people still poor and living at the bottom of society even though they have been working hard?
每日刷题记录 (十五)