Lapis如何读写HTTP的Header数据
by 糖果
这不是翻译的文章,其中直接用了我的理解,进行功能的描述。
How do I read a HTTP header?
如何读取HTTP的Header数据
The req field of the self passed to actions has a headers fields with all the request headers. They are normalized so you don’t have to be concerned about capitalization.
在Lapis中headers数据,直接存于self.req.headers数据结构中,可以像访问map一样,用key取得对应的字段值,代码如下:
local lapis = require("lapis")
local app = lapis.Application()
app:match("/", function(self)
return self.req.headers["referrer"]
end)
How do I write a HTTP header?
如何向HTTP的header中写入数据。There are two ways to write headers. In these examples we set the Access-Control-Allow-Origin header to *
基本上有两种方式,可以进行写操作,下面代码中的例子是把Access-Control-Allow-Origin这个字段设成"*"
You can return a headers field (or pass it to write) from an action:
我们可以一个路由的return响应动作中返回一个Header。
local lapis = require("lapis")
local app = lapis.Application()
app:match("/", function(self)
return {
"OK",
headers = {
["Access-Control-Allow-Origin"] = "*"
}
}
end)
Alternatively, the res field of the self has a headers field that lets you set headers.
或者,你也可以通过改变self.res.header这个数据结构中的字段值,来改变headers的设定。
local lapis = require("lapis")
local app = lapis.Application()
app:match("/", function(self)
self.res.headers["Access-Control-Allow-Origin"] = "*"
return "ok"
end)
If you need to change the content type see below.
如何你想改变,返回数据的类型,看下面的说明。
How do I set the content type?
如何设定返回内容的类型。
Either manually set the header as described above, or use the content_type option of the write method, or action return value:
我们使用content_type选项方法, 改变返回数据的类型。
local lapis = require("lapis")
local app = lapis.Application()
app:match("/", function(self)
return { content_type = "text/rss", [[<rss version="2.0"></rss>]] }
end)