Request & Response
Request
Request 表示当前用户访问请求相关的信息以及函数调用,对应的变量空间名为
request
。
常用属性
request 属性字段
变量名 | 类型 | 描述 |
---|---|---|
host | 字符串 | 域名 |
method | 字符串 | 如`GET` `POST` `PUT`等 |
form | 字典 | 通过POST\PUT方式的传值 |
args | 字典 | 通过GET方式的传值 |
values | 字典 | 合并了form & args |
data | 字符串 | POST 方式下原始的内容 |
json | 字典 | 客户端发送的mimetype是`application/json`,则此变量存在 |
xml | 字典 | 跟json字段功能类似,对应的 mimetype 是`application/xml` |
language | 小写字符串 | 当前访客浏览器的语言,比如`zh_cn` |
path | 字符串 | - |
url | 字符串 | - |
base_url | 字符串 | - |
url_root | 字符串 | - |
url_without_host | 字符串 | - |
protocol | 字符串 | http or https |
mime_type | 字符串 | 根据当前 url 推断得到的 mime_type |
ext | 字符串 | 根据当前 url 推断得到了文件名后缀(不包含`.`) |
is_https | 布尔值 | True/False |
is_login | 布尔值 | 当前用户是否已登录 |
is_admin | 布尔值 | 当前用户是否是站长 |
request.path 相关说明
假设http://www.example.com/page.html?x=y
被访问,则request有以下几个属性:
变量名 | 值 |
---|---|
path | /page.html |
base_url | http://www.example.com/page.html |
url | http://www.example.com/page.html?x=y |
url_root | http://www.example.com/ |
request.url_without_host | /page.html?x=y |
函数调用
get_offset_path
作用: 根据当前 URL,得到一定偏移值的路径,。
接收参数: <offset=1>
原理: 将当前的 URL 路径去除分页信息后,以~~
, /
作为分割,然后按照偏移量重新组装。
注意: 分页信息
是指 URL 如果路径以/page/<int>
结尾的,则作为当前页码数,先行提取另行处理。
示例:
// 假设 URL 为 /hello/world/~~test/hi, 有~~存在,则以~~为分隔符
// 则 path1 将是 test/hi
path1 = request.get_offset_path(1)
// 假设 URL 为/hello/world/test/hi
// 则 path1 将是 world/test/hi ; path2 将是 test/hi ; path3 将是 hi
path1 = request.get_offset_path(1)
path2 = request.get_offset_path(2)
path3 = request.get_offset_path(3)
get_offset_path 衍生
也可以直接request.offset_path_<int>
的方式调用get_offset_path
,比如request.offset_path_1
等价于request.get_offset_path(1)
,以此类推。
redirect
作用: 页面跳转
接受参数: <url, code=302>
get_mime_type
作用: 指定一个 URL 路径,推断对应的 mime_type
接受参数: <path>
get_ext
作用: 指定一个 URL 路径,推断对应的文件后缀
接受参数: <path>
Apple
是
Request
的子 namespace,可以通过request.apple
进行调用。
get_app_info
接受参数: <app_id=None, country=None, app_url=None>
作用: 获取 iTuens 上 App 的信息,以 JSON 格式进行保存 (缓存时间为1天),并将封面等必要的图片保存到当前站点。
在app_id & country 未指定的情况下,会根据 app_url 自动分析app_id & country; 以 https://itunes.apple.com/us/app/instagram/id389801252
这个app_url
为例,country
为us
,app_id
为389801252
。
get_app_info
返回的是一个dict类型数据,可以直接调用其上的各个属性值,这里不做特别的介绍,该函数运行后,在文件管理器内_data/apps/<country>-<app_id>/app.json
内会由完整的数据,以此作为参考即可。
Response
Response 是指从服务器返回给浏览器的数据对象,对应的变量空间名为
response
。
设定 Response 属性
type (同 content_type & mime_type)
作用: 决定 response 的类型
示例:
response.type = "application/json"
code (同 status_code & status)
作用: 决定 response 的状态码
示例:
response.code = 200
函数调用
raise_404
作用: 主动触发404(Not Found)页面
接受参数: <description="">
示例:
// 触发一个404页面
+resposne.raise_404()
// 触发404页面的同时,进行错误原因的说明
+resposne.raise_404("just can not find the resource")
redirect
作用: 页面跳转
接受参数: <url, code=302>
response
作用: 强制返回一个 response 以替代当前之前渲染的内容
接收参数: <content, mime_type='text/html'>
set_header
作用: 页面的 response 对象上,增加自己的 header
接收参数: <key, value>
说明: key,必须是字母、-、数字的组合,比如 +response.set_header('hello', 'world')