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为例,countryusapp_id389801252

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')