quinku (luarocks) (download)
quinku is a simple, opinionated HTTP 1.1 server with optional support for HTTPS and multipart requests. It requires only LuaSocket to perform and is otherwise written in pure Lua.
Example of a simple response and GET query:
local http = require"quinku"
local function handler(request)
local response = {
status = 200,
headers = {}
}
if request.path == "/" then
if request.get["boob"] == "please give me html" then
response.headers["Content-Type"] = "text/html; charset=UTF-8"
end
response.body = "Hello, World!"
else
response.status = 404
response.body = "Oops"
end
return response
end
local settings = {
ip = "0.0.0.0",
port = 25000,
handler = handler
}
http.run(settings)
Note that quinku may mutate the tables you pass onto it.
By default, quinku assumes the response body to be plain-text encoded with UTF-8.
The request structure contains:
path
: normalized HTTP pathmethod
: HTTP request methodversion
: HTTP request version stringbody
: HTTP request bodyheaders
: HTTP request header tableget
: GET parameterspost
: POST parameters
File uploads may only exist in post
, and are exposed as tables with the filename
and value
fields.
The response structure may contain any of these fields:
status
: default 200headers
: HTTP response header tablebody
: HTTP response body
None are necessary, but data given must be consistent (e.g. Content-Length
may not be different from the true body length.)
HTTPS (untested) requires the LuaSec module and is enabled by extending the settings table:
local settings = {
ip = "0.0.0.0",
port = 25000,
handler = handler,
sec = {
key_file = "/path/to/cert.key",
cert_file = "/path/to/the.crt"
}
}