WEB开发网
开发学院软件开发Python 适用于 CGI 程序员的 CherryPy 阅读

适用于 CGI 程序员的 CherryPy

 2008-09-30 13:11:14 来源:WEB开发网   
核心提示: CGI 脚本用户输入的其他来源是环境变量 PATH_INFO,它通常用于使 Web 应用程序的 URL 看起来更像真实的 Web 页,适用于 CGI 程序员的 CherryPy(5),例如,考虑 URL http://localhost:8080/hello/world/,那进来的 HTT

CGI 脚本用户输入的其他来源是环境变量 PATH_INFO。它通常用于使 Web 应用程序的 URL 看起来更像真实的 Web 页。例如,考虑 URL http://localhost:8080/hello/world/。如果 /hello/ 指定了一个 CGI 脚本,那么访问 /hello/world/ 会将 PATH_INFO 环境变量设置为 /world/ 而调用那个脚本。

在 CGI 环境中,是由 CGI 脚本负责解析额外路径信息。但是利用查询字符串参数,CherryPy 基于典型的使用约定为您进行解析。查询字符串键值对成为 CherryPy 应用程序中的关键字参数,而额外路径信息参数则成为对象的 default() 方法的位置参数:

清单 5. 额外路径信息参数成为对象的 default() 方法的位置参数

class Hello:
  @cpg.expose
  def default(self, who):
    return 'Hello, %s!' % who
class Application:
  hello = Hello()
cpg.root = Application()
cpg.server.start()

/hello/world/ URL 的 hello/ 部分被映射为 cpg.root.hello,这是 Hello 的一个实例。对象 Hello 没有叫做 world 的方法或者成员对象,所以这个 URL 的 world 部分作为那个对象的 default() 方法的位置参数被传递进来。

读取自请求对象的标题

CherryPy 解析用户请求的 URL,并使用适当的参数传送到 Python 方法,但是一个 HTTP 请求不只是一个 URL。那进来的 HTTP 标题又如何呢?

CherryPy 方法都具有对叫做 cgp.request 的对象的访问权,该对象包含有许多关于用户的 HTTP 请求的信息。这个对象最有意思的成员是 requestMap,它包含与 Web 请求相关的所有进入的 HTTP 标题:

清单 6. requestMap 包含与 Web 请求相关的进入的 HTTP 标题

上一页  1 2 3 4 5 6 7 8  下一页

Tags:适用 CGI 程序员

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接