The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

OpenResty::Tutorial::GettingStarted_cn - 中文版快速入门教程

DESCRIPTION

申请 OpenResty 帐户

OpenResty 帐户是以应用为单位的。一般来说,每一个应用都应注册一个独立的 OpenResty 帐户。目前注册帐户的方法是写信给我们:agentzh@yahoo.cn.

请在来信中附上你希望的帐户名(全部小写字母加数字)以及 Admin 角色的初始密码。一般来说,我们创建的帐户都位于下面这个服务器:api.openresty.org.

管理 OpenResty 帐户

应用开发人员一般使用 Admin 角色来管理她的 OpenResty 帐户。该角色是密码登录方式。

OpenResty 本身是 100% 基于 Web Service 的,所以技术上讲完全可以使用包括 curl 和 Firefox 这样的 HTTP 客户端来管理你的帐户。但站长们一般都选择使用一个现成的基于 Web 的管理站点:

http://openresty.org/admin/

用你的帐户名和 Admin 密码登录之后,你会看到它的主界面:

PNG IMAGE

Admin main UI at agentzh.org

Image hosted by agentzh.org

http://agentzh.org/misc/admin-index.png

此时你会看到主菜单中有 Models, Views, Roles, Actions, Feeds 等项目。

Model选项卡

Models 选项卡是用来对 OpenResty Model 对象进行管理的。OpenResty Model 在逻辑上类似于数据库中的 table. 通过该 Models 选项卡中的界面,你可以创建新的 Model, 修改、查看或者删除已有的 Model 对象。

每个 Model 对象都有若干属性,比如 name, description 之类的。其中最重要的是 columns 属性。它定义了 Model (或者说数据表)中的列。

第个列都需要指定一个列名(name),一个标签(label ),一个类型(type),以及一个可选的缺省值。注意包括 Model 名,列名在内的所有 OpenResty 的对象的名字都是大小写敏感的。

绝大多数常见的 Pg 数据类型都可以在 OpenResty 的列类型中使用,比如下面这些例子: bigint, cidr, inet, ip4r, macaddr, tsquery, tsvector, bit (5), boolean, text, varchar (3), integer, serial, real, double precision, ltree, date, timestamp (0) with time zone, timestamp (2) without time zone, interval.

在 Model 选项卡中可以修改已有的定义,只需要用鼠标单击要修改的值就可以了。

创建好的 Model 列表可以直接在浏览器或者 curl 中查看,例如

  http://api.openresty.org/=/model?_user=foo.Admin&_password=PASSWORD

这里 foo 是你的帐户名,而 PASSWORD 则是你的 Admin 角色的密码的 MD5。得到的结果应该是 model 列表的 JSON 表示。一个典型的输出是:

  [{"src":"/=/model/YahooStaff","name":"YahooStaff","description":"Yahoo! China Staff"},{"src":"/=/model/IrcLog","name":"IrcLog","description":"IRC Log"}]

如果在 URL 主体后面加上 .yml 后缀,则能看到可读性更好的 YAML 表示:

  GET /=/model.yml?_user=foo.Admin&_password=PASSWORD

一次典型的输出是

  --- 
  - 
    description: Yahoo! China Staff
    name: YahooStaff
    src: /=/model/YahooStaff
  - 
    description: IRC Log
    name: IrcLog
    src: /=/model/IrcLog

获取密码明文对应的 MD5 的方法有很多,我们经常用的两种方法是:

  1. 在 UNIX shell 中输入命令

        echo -n 'my_password' | md5sum
  2. 在 PostgreSQL 的 psql 终端中输入命令

        select md5('my_password');

这里的 my_password 就是你的密码明文。

利用 Admin 站点的 Models 选项卡还可以完成记录插入操作。但是其界面一次只允许插入一条记录。如果你有大量的记录需要导入到 Model,见参见[[OpenResty_数据导入]]一文。

有关 Model 使用的更多信息请参见

"Models" in OpenResty::Spec::REST_cn

以及

"Models" in OpenResty::Spec::Overview

Views选项卡

通过Views选项卡,可以创建和管理你帐户中的 View 对象。View 对象的定义本质是一种带参量的“迷你 SQL”查询。假设前面我们创建了一个名叫 Persion 的 Model, 它拥有 name, age, 和 gender 这三个列。那么我们可以为它创建一个拥有以下定义的 View 对象:

  select name, age
  from Student
  where name = $name and age >= $age

这里 name 和 age 都是参量。

在创建了这个名为 FindStudent 的 View 对象之后,我们可以通过 HTTP 来调用 View 对象,从而执行其对应的参数化的查询:

  GET /=/view/FindStudent/~/~?name=李明&age=35&_user=foo.Admin&_password=PASSWORD

就将返回 FindStudent 中年龄在 35 岁以上的名叫“李明”的记录列表(JSON格式)。

这里使用的“迷你SQL”语言叫做 RestyScript. 视图中使用的 RestyScript 是 SQL 的一个非严格子集,而且是大小写敏感的。

有关 View 使用的更多信息请参见

"Views" in OpenResty::Spec::REST_cn

以及

"Views" in OpenResty::Spec::Overview

调用OpenResty接口

基于 OpenResty 的应用大致分以下两类:

  1. 基于 PHP/Java 的服务器端应用,

  2. 基于纯 JS 的 AJAX 应用.

第一类应用的代表是我们全能搜索的菜名搜索功能模块:

http://ysearchblog.cn/2008/06/post_120.html

使用其语言自身的 HTTP 客户端库和 JSON 库完成对 OpenResty 服务的调用。

第二类应用的代表是我的 blog 网站:

http://blog.agentzh.org

一般使用我们的 openresty.js 库:

http://svn.openfoundry.org/openapi/trunk/clients/js/

AUTHOR

Agent Zhang (agentzh) <agentzh@yahoo.cn>

SEE ALSO

OpenResty::Spec::REST_cn, OpenResty::Spec::Overview, OpenResty.