openresty及lor入门教程

40 篇文章 1 订阅

一、开发环境准备

1、openresty安装

下载openresty-1.13.6.1-win32.zip,解压到本地任一目录
在这里插入图片描述

2、eclipse安装lua插件

eclipse–>help–>eclipse marketplace–>输入lua,只能查到一个,下载并安装
在这里插入图片描述
在这里插入图片描述

3、环境配置说明

打开openresty的目录,找到conf文件夹下的nginx.conf
在这里插入图片描述
找到http下的server部分,listen对应的是端口号,可以修改。
增加 include 语句,引入分配置文件,对应的是自己lua项目中的配置文件,以后只需要对应自己工程中修改,不需要在改openresty中的conf配置文件。
注:该路径要写绝对路径。
在这里插入图片描述
双击openresty目录下的nginx.exe可以启动openresty。
在这里插入图片描述
在cmd中用命令tasklist /fi "imagename eq nginx.exe可以看是否启动成功。
在这里插入图片描述
上面的情况就代表启动成功。
关闭openresty可以用命令taskkill /pid 3128 /F 启动成功后,可以在浏览器中访问到openresty的默认页面。localhost:8077(上面nginx.conf中配置的端口号)
在这里插入图片描述
openresty环境装成功后,继续编写分配置文件中的conf文件,也就是include中对应的配置文件。

  1. Eclipse中新建一个lua项目,可以建一个文件夹放对应的配置文件。

在这里插入图片描述

  1. 从上图看出dev.conf是nginx中配置文件引入的分配置文件地址,这个配置文件中,只有一个端口号,还有一个是lua文件的入口,也需要用绝对路径。Lua入口文件的地址要用lua_package_path引入。

在这里插入图片描述

  1. Main.lua中只是简单的写了一句hello world,重启openresty服务。出现以下页面,则调用lua脚本成功。
    在这里插入图片描述

二、Lor框架基本使用

Lor是一个运行在OpenResty上的使用Lua编写的Web框架。
具体资料见:http://lor.sumory.com/guide/
以下介绍以lor_demo工程为例,下面是lor_demo工程目录结构图。

在这里插入图片描述

1、分配置文件dev.conf介绍

nginx的conf要引入该路径,下面对配置文件中的逐一解释:
在这里插入图片描述

  1. 第4行是lua_package_path是引入lua文件的路径,主要包括两部分,app下面是自己的业务逻辑用到的,lualib是lua中常用的一些架包。配绝对路径 。
  2. 第5行是lua_package_cpath是引入c的文件的写法,没有可以不写 。
  3. 第10行listen的是工程启动后访问的端口号 。
  4. 第11-15行是对应前端工程的对应配置,其中root 后面是前端对应的文件夹地址,index是对应目录下,前端页面的入口地址。配绝对路径。
    按上面的配置localhost:8080/index.html即可访问对应的前端
  5. 第20行是引入lua入口文件的地址。配绝对路径
  6. 第6-8行及22-29行是对应于springboot服务工程的相关配置,上下文及对应ip的配置config文件中主要是放一些配置项,如登录白名单,mysql,redis,调用其它服务的路径等等。

2、main入口文件介绍

首先说明, require加载了对应的模块。可以理解为引入对应的包或者类,重点关注以下几句:

local lor = require("lor.index")
local app = lor()
local router = require("router")
local check_login = require("filter.check_login")
app:use(check_login(whitelist))
router(app)
app:run()

上面是lor框架的最简单加载过程,初始化一个app,也就是lor(),然后调用app里面的函数,router是一个路由,user后的check_login是一个拦截,最后run运行。

3、router文件介绍

local xs_router = require("k12.action.xs_action")
app:use("/xxkj/xs", xs_router())

该文件主要配置访问接口的路径的前缀部分,具体的router中再对应实现接口。

4、action文件夹介绍

放具体的接口路径,出入参的验证等处理。
先申明一个router: local xsxx_router = lor:Router()

  1. 定义get接口
xsxx_router:get("/xsxq", function(req, res, next)      
	#业务逻辑
end) 
  1. 定义post接口
xsxx_router:post("/scxs", function(req, res, next)    	
	#业务逻辑
end)    

前半部分是路径,和前面router文件中的前半部分拼起来是全路径。 function中可以处理出入参,req可以取到入参相关,res可以定义出参相关。
常用到req.body, req.query, res:json

5、service文件夹介绍

供action调用,处理具体的业务逻辑,如调用外部接口等。
介绍两种调用外部接口方式 :

  1. 用工具类使用全路径调用
local result=httpUtil:get(url.."/xs/cxxslb"..param)
local result=httpUtil:post(url.."/xs/scxs",cjson.encode(post_param)) 
  1. 用ngx的原生方法调用,这个时候用分配置文件中的相对路径调用
  • 调单个接口
local result=ngx.location.capture("/xs/xsxq?id="..id)
  • 同时调多个接口
local res1,res2=ngx.location.capture_multi({{"/xs/xsxq?id="..xsid},{"/bj/bjxq?id="..bjid}})

6、filter文件夹介绍

主要写登录拦截的相关逻辑,可以暂时不关注。

7、综述

按照上面编写完接口后,可以根据分配置文件中的端口号,router文件中的路径前缀,action文件中的路径及接口类型(get/post)去访问调试接口了http://localhost:8080/xxkj/xs/xsxq?id=1100000000000000019
在这里插入图片描述

三、补充

1、调式

openresty不能单步执行,调式的时候,只能看log下的error.log文件中的日志。
在这里插入图片描述

2、代码中调式

一般写log语句查看对应的变量。

ngx.log(ngx.ERR, cjson.encode(req.body))
ngx.log(ngx.ERR,"error")

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值