适用于 CGI 程序员的 CherryPy
2008-09-30 13:11:14 来源:WEB开发网清单 2. CherryPy 调用 hello 对象的 index() 方法
#!/usr/bin/env python
from cherrypy import cpg
class HelloWorld:
@cpg.expose
def index(self):
return "Hello, world!"
class Application:
hello = HelloWorld()
cpg.root = Application()
cpg.server.start()
当您访问 /hello/ URL 时,您的请求被映射到对象 cpg.root.hello,并且其默认的方法(index())被调用来处理该请求。
暴露对象和方法
方法 hello 和 index 上的 装饰符 @cpg.expose 有什么用呢?它告诉 CherryPy,调用该方法来响应 Web 请求没有问题。
在提供静态文件的 Web 网站,假定 Web 空间中的每个文件和目录都计划用于公共消耗。但是也有几处例外,例如,Apache 就不会提供隐藏的文件,如 UNIX® 系统上的 .htaccess。
当您将一个对象树暴露为一个 CherryPy URL 空间时,假设是另一种情形:除非您显性地将方法标记为暴露,否则它不会为外面的用户提供服务。考虑一下许多编程语言中公有和私有类成员之间的区别,(并且通过 Python 中的 _method() 约定非正式地实施)。一个设计良好的 CherryPy 类可能只有少数几个公有的方法暴露给 Web 客户机,但是它很可能有许多不允许客户机直接访问的内部方法。
我认为装饰符是将方法暴露给 CherryPy 的最佳方式,但是也可以通过将其成员 exposed 设置为 True 来暴露一个方法:
清单 3. 通过将其成员 exposed 设置为 True 来暴露一个方法
class HelloWorld:
def index(self):
return "Hello, world!"
index.exposed = True
- ››程序员面试问题锦集
- ››程序员:使用 DB2 for z/OS 减少会话:第 1 部分:...
- ››CGI拒绝服务攻击技术浅析
- ››适用于Windows 7 7000的Intel PRO Wireless 2200B...
- ››适用于 CGI 程序员的 CherryPy
- ››程序员注意:Java开发最容易犯的21种错误
- ››程序员杂谈:Ajax优于JSF的几个原因讨论
- ››程序员生活 J2EE学习者值得研究的开源项目
- ››程序员学习Java的一剂良药:破坏源程序
- ››程序员必读:对JAVA语言的十个常见误解
- ››程序员眼中的qmail(qmail源代码分析)
- ››程序员必读的《C++程序设计陷阱》
更多精彩
赞助商链接