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 ...
随机推荐
- 转:IAdaptable & IAdapterFactory
IAdaptable & IAdapterFactory在Eclipse中使用IAdaptable接口的方式有两种 在Eclipse中使用IAdaptable接口的方式有两种1:某个类希望提供 ...
- 成长笔记--解决Eclipse 变量名的自动补全问题
大家使用eclipse敲代码的时候,是不是都被这样一个问题困扰着.就是键入一个变量名的时候,会自动提示补全:在你的变量名后面加上类型的名字!这个时候,你就必须键入Esc才不会自动补全你的变量,如果你键 ...
- Spring中使用集成MongoDB Client启动时报错:rc: 48
一定是所在的服务器也装了MongoDB导致端口冲突,解决方法:kill掉全部MongoDB的进程. ps aux | grep mongod PID 参考: http://blog.csdn.net/ ...
- advanced-performance-troubleshooting-waits-latches-spinlocks
https://www.sqlskills.com/blogs/paul/advanced-performance-troubleshooting-waits-latches-spinlocks/
- xamarin.android 消息推送功能--极光推送
最近在使用xamarin.android的消息推送功能,官方使用的例子是FCM方式,按照官方文档,使用FQ软件是可以成功的,但是在国内由于众所周知的原因,在国内服务并不能使用,于是查找国内各自推送平台 ...
- 都是 htmlspecialchars的错,解决 织梦cms dedecms 标题不能为空 不支持php5.3 php5.4 php5.5版本
article_add.php 101行 $title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen)); 改成 $title = h ...
- python tcp,udp简单使用
import socket host = '127.0.0.1' port = 9999 #创建一个tcp socket套接字 tcp_server = socket.socket(socket.AF ...
- 【GLSL教程】(三)在OpenGL中向shader传递信息 【转】
http://blog.csdn.net/racehorse/article/details/6634830 引言 一个OpenGL程序可以用多种方式和shader通信.注意这种通信是单向的,因为sh ...
- Web.config配置文件详解(新手必看) 【转】
来源 :http://www.cnblogs.com/gaoweipeng/archive/2009/05/17/1458762.html 花了点时间整理了一下ASP.NET Web.config配置 ...
- 【2048小游戏】——原生js爬坑之遍历算法显示二维数组内容
引言:做2048小游戏会将横纵方向的数字内容,存储在一个二维数组中,要将这个二维数组中的内容显示在页面上,就一定要用遍历算法来实现了. 一.二维数组存储 首先考虑用二维数组存储所有行数,列数 ...