MethodDispatcher—Cherrypy对REST的支持
前言
CherryPy是Python的一个Web框架,通过MethodDispatcher内建了对REST的支持,而且使用非常方便。
示例
首先,我们需要有一个符合REST风格的资源(Resource)。通过Python对象来定义:
import cherrypy class ProgSnaps(object):
exposed=True def GET(self):
return "You access the REST api /ProgSap/GET"
接着,将配置里默认的Dispatcher修改为支持REST的MethodDispatcher:
conf = {'/':{'request.dispatch':cherrypy.dispatch.MethodDispatcher()} }
最后,为CherryPy添加到资源的映射,启动服务器就可以通过url:http://localhost:8080/api/ProgSnaps 来访问了。
cherrypy.tree.mount(ProgSnaps(),"/api/ProgSnaps",conf)
注意事项
- 作为资源的Python对象必须是整个对象都exposed,通过设置一个对象的属性来实现,比如在ProgSnaps中设定exposed=true。非REST的情况下,都是在要暴露的方法上面添加@cherrypy.expose属性。
- REST的方法名必须都是大写的,比如GET,PUT,POST和DELETE。其它非大写的方法也可以定义在资源对象中,但是无法通过url访问到,可以作为实现REST方法(GET等)的辅助方法存在。比如例子中的getContent方法。
- 不需要自己定义http的allow头信息了,CherryPy根据资源对象中暴露的REST方法自动生成。比如本例中我们在ProgSnaps中定义了GET和PUT,那么最后http的头中会有这样的信息:
Allow:GET, HEAD, UPDATE
注:HEAD是默认添加的。REST总是允许访问HEAD信息。
完整代码
import cherrypy class ProgSnaps(object):
exposed=True def GET(self):
#return "You access the REST api /ProgSap/GET"
return self.getContent("GET") def UPDATE(self):
return "You have accessed the REST api /ProgSap/UPDATE" def getContent(self,method):
return "You access the REST api /ProgSap/"+method conf = {
'/':{'request.dispatch':cherrypy.dispatch.MethodDispatcher()}
} if __name__ == '__main__':
cherrypy.tree.mount(ProgSnaps(),"/api/ProgSnaps",conf)
cherrypy.engine.start()
cherrypy.engine.block()
MethodDispatcher—Cherrypy对REST的支持的更多相关文章
- edwin报警和监控平台开源了(python源码)
简单介绍一下edwin edwin是一个报警和监控平台, 可以使用它监控任意东西, 如有异常(分为警告级和严重级), 可以发出报警. 可以自定义报警的通知方式, 比如邮件/短信/电话. 另外, 它提供 ...
- cherrypy
十多年来,Web 程序设计人员一直使用 CGI 将应用程序连接到 Web 服务器和另一端的 Web 浏览器.有很多理由建议使用 CGI:它可以与任何编程语言一起使用,并且它在 Web 服务器和宿主服务 ...
- 支持 .NET Core 的 Memcached 客户端 EnyimMemcachedCore
1. 介绍 EnyimMemcachedCore 是一个支持 .NET Core 的 Memcached 客户端,是从 EnyimMemcached 迁移至 .NET Core的,源代码托管在 Git ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
- Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持
Jexus 是一款运行于 Linux 平台,以支持 ASP.NET.PHP 为特色的集高安全性和高性能为一体的 WEB 服务器和反向代理服务器.最新版 5.8.2 已经发布,有如下更新: 1,现在大 ...
- 7.让网站支持http和https的访问方式
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#iis 怎么让网站在本地支持SSL?http://www.c ...
- 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])
常用技能:http://www.cnblogs.com/dunitian/p/4822808.html#skill 逆天博客:http://dnt.dkil.net 逆天通用水印扩展篇~新增剪贴板系列 ...
- x:bind不支持样式文件 或 此Xaml文件必须又代码隐藏类才能使用{x:Bind} 解决办法
这两天学习UWP开发,发现一个很有趣的问题,就是我题目中的描述的. 我习惯了在ResourceDictionary中写样式文件,但是发现用x:Bind时会有问题 如果是写在Style里,则提示 “x: ...
- .NET Core采用的全新配置系统[9]: 为什么针对XML的支持不够好?如何改进?
物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...
随机推荐
- 2.搭建配置最简单的spring mvc 工程-基础版
目标:用最少的东西,搭建可以运行的最最基础的springMvc登陆校验项目! spring 4 1.首先配置pom.xml引入spring 相关jar, 引用都有注释, 无关的可以暂时不引用. < ...
- getServletConfig().getInitParameter("count1") java.lang.NullPointerException
通常在doget中 System.out.println(getServletConfig()); System.out.println(getServletConfig().getInitParam ...
- 手把手教你构建 C 语言编译器
http://lotabout.me/2015/write-a-C-interpreter-1/
- 原生JavaScript技巧大收集100个
原生JavaScript技巧大收集 1.原生JavaScript实现字符串长度截取function cutstr(str, len) { var temp; var icount = 0; var p ...
- Nginx配置文档具体解释
Nginx的配置文档具体解释.在这儿做个总结,以便以后使用的时间查看. 下面大部分自己整理.部分来自參考 #设置用户 #user nobody; #启动进程数(一般和server的CPU同样) #能 ...
- Java内存泄漏及分析
对于内存泄漏,首先想到的是C语言,其实不然,java中也有各种的内存泄漏.对于java程序员,在虚拟即中,不需要为每一个新建对象去delete/free内存,不容易出现内存泄漏.但是,正 是由于这种机 ...
- HTML字体对应word字体
42磅对应初号. 36磅对应小初. 26磅对应一号. 24磅对应小一号. 22磅对应二号. 18磅对应小二号. 16磅对应三号. 15磅对应小三号. 14磅对应四号. 12磅对应小四号. 10.5磅对 ...
- DataTable行处理
DataTable dt=new DataTable(); 新增行: DataRow addDR= mydatatable.NewRow();addDR["ID"] = " ...
- Vue.js 很好,但会比 Angular 或 React 更好吗?
文章转自:http://www.oschina.net/translate/vuejs-is-good-but-is-it-better-than-angular-or-rea Vue.js 是一个用 ...
- RF --系统关键字开发
需求: 接收一个目录路径,自动遍历目录下以及子目录下的所有批处理(.bat) 文件并执行. 首先在..\Python27\Lib\site-packages 目录下创建 CustomLibrary 目 ...