当前位置:网站首页>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 .
边栏推荐
- DR-Net: dual-rotation network with feature map enhancement for medical image segmentation
- A novice asks a question. I am now deployed on a single machine. I submitted an SQL job and it runs normally. If I restart the service job, it will disappear and I will have to
- 新手问个问题,我现在是单机部署的,提交了一个sql job运行正常,如果我重启了服务job就没了又得
- mysql拆分字符串作为查询条件的示例代码
- Pdf batch splitting, merging, bookmark extraction, bookmark writing gadget
- Spark Tuning (II): UDF reduces joins and judgments
- Precise drag and drop within a contentable
- 【全网首发】Redis系列3:高可用之主从架构的
- Implementation steps of mysql start log in docker
- 传统企业要为 Web3 和去中心化做的 11 个准备
猜你喜欢

Word2vec (skip gram and cbow) - pytorch
Implementation steps of mysql start log in docker

European Bioinformatics Institute 2021 highlights report released: nearly 1million proteins have been predicted by alphafold

#DAYU200体验官# 首页aito视频&Canvas绘制仪表盘(ets)

吴恩达2022机器学习课程评测来了!

asp读取oracle数据库问题

Pdf batch splitting, merging, bookmark extraction, bookmark writing gadget

Introduction to network basics

Station B Big utilise mon monde pour faire un réseau neuronal convolutif, Le Cun Forward! Le foie a explosé pendant 6 mois, et un million de fois.
MySQL中正则表达式(REGEXP)使用详解
随机推荐
【全网首发】Redis系列3:高可用之主从架构的
Redis 持久化机制
COSCon'22 社区召集令来啦!Open the World,邀请所有社区一起拥抱开源,打开新世界~
Method of canceling automatic watermarking of uploaded pictures by CSDN
js對JSON數組的增删改查
【Unity】升级版·Excel数据解析,自动创建对应C#类,自动创建ScriptableObject生成类,自动序列化Asset文件
GPT-3当一作自己研究自己,已投稿,在线蹲一个同行评议
CRMEB商城系统如何助力营销?
PDF批量拆分、合并、书签提取、书签写入小工具
Some suggestions for foreign lead2022 in the second half of the year
spark调优(二):UDF减少JOIN和判断
How to choose the server system
AcWing 4299. Delete point
Up to 5million per person per year! Choose people instead of projects, focus on basic scientific research, and scientists dominate the "new cornerstone" funded by Tencent to start the application
Should the jar package of MySQL CDC be placed in different places in the Flink running mode?
AI表现越差,获得奖金越高?纽约大学博士拿出百万重金,悬赏让大模型表现差劲的任务...
Bipartite graph determination
Unified Focal loss: Generalising Dice and cross entropy-based losses to handle class imbalanced medi
Dockermysql modifies the root account password and grants permissions
MySQL数据库之JDBC编程