MoonScript如何使用RESTY-HTTP
作者:糖果
在OpenResty中发起HTTP请求,一般情况下,有两种方式:
1.通过内部Proxy。
2.使用RESTY-HTTP库发起访问。
Lapis使用的是interal proxy,之前文章有提到,下面提到的是RESTY-HTTP的MoonScript调用
实现。
RESTY-HTTP安装
实际RESTY-HTTP的主要实现就是两个lua文件, http_headers.lua和http.lua这两个文件。
将文件复制到/usr/local/openresty/lualib/resty下即可使用,再引用http.lua时注意一下
的是Lapis也有一个同名文件,需要注意一下冲突。
MoonScript代码:
http = require "resty.http"
httpc = http.new()
res, err = httpc\request_uri("http://www.baidu.com")
if res.status == ngx.HTTP_OK
return res.body
else
return "nil"
LUA代码:
["/testcase"] = function(self)
local restyhttp = require("resty.http")
local httpc = restyhttp.new()
local res, err = httpc:request_uri("http://www.baidu.com")
if res.status == ngx.HTTP_OK then
return res.body
else
return "nil"
end
end
```
MoonScript和LUA代码几乎没太大区别,因为request_uri请求中使用的是域名,所以需要
修改conf文件。
## nginx.conf配置
location / {
resolver 8.8.8.8;
}
RESTY-HTTP与CJSON不同,并没有涉及到任何so库的生成,http_headers.lua和http.lua这
两个文件也是在Makefile来实现的,使用的是install命令-d参数,相当于在cp过程中,如果目标位置没
有相应的文件夹就创建一个文件夹。
## Makefile
OPENRESTY_PREFIX=/usr/local/openresty
PREFIX ?= /usr/local
LUA_INCLUDE_DIR ?= $(PREFIX)/include
LUA_LIB_DIR ?= (LUA_VERSION)
INSTALL ?= install
TEST_FILE ?= t
.PHONY: all test install
all: ;
install: all
$(INSTALL) -d (LUA_LIB_DIR)/resty
$(INSTALL) lib/resty/*.lua (LUA_LIB_DIR)/resty/