最新标注
热门标注
历史更新
站点地图
RSS
Home
CrazyCoder
»
原创
»
it评论
»
it业界
»
互联网
»
精品软件
开发语言
»
网络编程
编程综合
嵌入式开发
算法
英文资料
汇编语言
PowerBuilder
p2p技术
验证码识别
DotNet
Java教程
C语言教程
C 教程
Delphi教程
VB教程
QQ协议开发
项目管理
»
数据库
»
Web开发
»
Python
Css教程
XML教程
网页特效
PhotoShop教程
Illustrator教程
CorelDraw教程
Ruby教程
CorelDraw教程
网站安全
开发平台-工具
Web
PHP教程
Flash教程
Ajax教程
Javascript教程
Html教程
Dreamweaver
Asp教程
技术综合
»
软件测试
办公软件
QQ相关
Windows
网络技术
游戏开发
软件工程
软件教程
编程思想
游戏开发
外挂开发
OpenApi
AutoCad
广告设计
3D设计
平面设计相关
移动手机开发
服务器
»
Linux
Unix/FreeBsd
web服务器
服务器技术
安全
博文摘选
»
翻译
首页
»
博文摘选
» protorpc,Google App Engine ProtoRPC Python API 概述
Rss订阅
protorpc,Google App Engine ProtoRPC Python API 概述
on 2011-6-25
in
博文摘选
|
0 Comment
赖勇浩(
可以创建你的基本 webapp 的服务啦~
通过命令行测试服务
创建服务后,可以使用 curl 或相似的命令行工具进行测试:
# After starting the development web server: % curl -H \ 'content-type:application/json' \ -d {"text": "Hello guestbook!"}'\ http://localhost:8080/PostService.post_note
当返回一个空的 JSON 表示留言提交成功,可以通过浏览器(http://localhost:8080/)查看这个留言。
增加消息字段
现在可以向 PostService 提交留言了,接下来再增加一个新的方法。先在 postservice.py 中定义一个请求消息,它有一些默认值,还有之前没有接触过的枚举字段(用来告诉服务器如何对留言排序)。让我们把下面的代码加到 PostService 类之前:
class GetNotesRequest(messages.Message): limit = messages.IntegerField(1, default=10) _disibledevent=>
消息中 limit 字段表示最大的请求的留言数量,默认为 10 条(通过 default=10 关键字参数指定)。
order 字段引入了一个 EnumField 类,它能够让 enum 字段类型的取值严格地限定在已定义的符号值范围内。在这里,服务器如何排序显示中的留言是由 order 字段指定的。要定义枚举值,需要创建 Enum 类的子类,它的每一个类属性都应为唯一的数字,然后被转换为一个可以通过类来存取的枚举类型的实例。
print 'Enum value Order.%s has number %d' % (Order.WHEN.name, Order.WHEN.number)
除了访问它的 name 和 number 属性,enum 值还有一个“特殊技能”能够更方便地转换它的 name 和 number,比如转换某个值到字符串或整数:
print 'Enum value Order.%s has number %d' % (Order.WHEN, Order.WHEN)
枚举字段的声明与其它字段是类似的,除了需要在第一个参数标明它的枚举类型,而且枚举字段也可以有默认值。
定义响应消息
现在定义一下 get_notes() 的响应消息。这个响应显然应该包含一组 Note 消息,消息能够包含其它的消:
class Notes(messages.Message): notes = messages.MessageField(Note, 1, repeated=True)
Notes.notes 字段是一个重复字段(通过 repeated=True 关键字参数说明),重复字段的值是一个列表,在这个例子里,Notes.notes 就是包含多个 Note 实例的列表,列表是自动创建的,并且不能赋值为 None。
来个如何创建 Notes 对象的例子:
response = Notes(notes=[Note(text='This is note 1'), Note(text='This is note 2')]) print 'The first note is:', response.notes[0].text print 'The second note is:', response.notes[1].text
实现 get_notes
现在把 get_notes() 方法加到 PostService 类中:
import datetime from protorpc import remote class PostService(remote.Service): ... @remote.remote(GetNotesRequest, Notes) def get_notes(self, request): query = guestbook.Greeting.all().order('-date') if request.on_or_before: when = datetime.datetime.utcfromtimestamp( request.on_or_before) query.filter('date <=', when) notes = [] for note_model in query.fetch(request.limit): if note_model.date: when = int(time.mktime(note_model.date.utctimetuple())) else: when = None note = Note(text=note_model.content, when=when) notes.append(note) if request.order == GetNotesRequest.Order.TEXT: notes.sort(key=lambda note: note.text) return Notes(notes=notes)
Tags:
python
protorpc
延伸阅读
2011-9-12
--
python代码,谁说使用Python你就写不出混乱的代码?
2010-12-15
--
python,Python Class System
2011-6-23
--
python,如何成为Python高手
2009-2-12
--
python软件:Python 设计模式——用模式改善软件设计
2010-12-9
--
python,多国外PHP开发者已放弃PHP而改用Python?
2009-2-12
--
psyco:用 Psyco 让 Python 运行得像 C一样快
2010-12-31
--
python,python的mysql
2009-2-12
--
python与php:Python 之优雅与瑕疵
2008-12-13
--
使用Python做软件Software持续构建
2009-9-6
--
python入门教程:Python入门
最新评论
发表评论
昵称
评论
验证码
点击图片更换
赞助商广告
随机更新
google飞行,Google推出飞行搜索
青海首家上市公司,巨鲸或成首家上市音乐概念公司 CEO曾称尽快IPO
收购webos,HTC收购webOS有什么意义?
域名被屏蔽,直接将某个域名从 Google 搜索结果里屏蔽的功能扩展到全球
受益匪浅,苹果北大开店引争议:影响学习氛围 或双方受益
【总结】简单易用的linux命令行清单
XJP:Google回归中国终极大猜想
新浪微博提升安,中国互联网城邦竞争力报告:腾讯领跑 新浪提升
受益匪浅,苹果北大开店引争议:影响学习氛围 或双方受益
微软补丁发布时间,微软发布9月五个安全补丁 危险程度一般
服务器数据恢复,西门子6块盘HP服务器RAID数据恢复成功案例
新浪微博提升安,中国互联网城邦竞争力报告:腾讯领跑 新浪提升
中电信10月或率先开售iPhone 5 经销商接受预订
构建自己的购物搜索引擎一:写一个简单的
Windows8:打破PC与后PC的樊篱?
颠覆笑傲江湖,微软对 Windows 颠覆性改造,隆重推出 Windows 8 开发人员预览版
博客园,给博客园的忠告——做事态度决定用户忠诚度
谷歌收购摩托罗拉,谷歌为收购摩托罗拉移动曾提价33%
品牌的价值,品牌存在的价值
颠覆笑傲江湖,微软对 Windows 颠覆性改造,隆重推出 Windows 8 开发人员预览版
中电信10月或率先开售iPhone 5 经销商接受预订
开发者预览版,官方下载:Windows 8开发者预览版
开源代码,Sonar实战【开源代码质量管理平台】
google搜索,Google推出飞行搜索
青海首家上市公司,巨鲸或成首家上市音乐概念公司 CEO曾称尽快IPO
百度地图api,透过【百度地图API】分析双闭包问题
豆瓣融资,豆瓣获千万美元融资是否表明社区网站依然还在春天
博客园,给博客园的忠告——做事态度决定用户忠诚度
Direct3D轮回:文字显示及FPS效率统计
ds3400,IBM DS3000存储DS3400数据恢复成功案例记录
热门标注
为什么使用博客
(1)
flexand
(1)
敲击右边的音叉
(1)
敲击钥匙
(1)
键盘敲击声
(1)
敲击扳手
(1)
敲击时代
(1)
json使用方法
(1)
愿景是什么意思
(1)
什么是愿景
(1)
实现企业愿景
(1)
虚拟机搭建
(1)
虚拟机搭建服务器
(1)
无线网络破解软件
(1)
无线软件
(1)
无线网络软件
(1)
无线路由软件
(1)
与或非门
(1)
或非门
(1)
交换机升级ios
(1)
最近更新
小改动大效果:记一次CPU负载高问题排查和解决
sql去除重复,Python 去除序列s中的重复元素
bingmap,[Windows Phone] 在Windows Phone应用中使用Google Map替代Bing Map
野指针,[C++]野指针的产生以及应对办法
数据库死锁,把 Visual Studio 死锁了,Bug?
XML解析中的namespace初探
网易视频,是技术还是态度,网易的视频Title
未来之超机学习机,为未来学习
ps批处理怎么用,用批处理来自动化测试
开源技术选型手册,半开源项目一之双机热备软件设计框架以及技术选型
ajaxpro,jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
所见所闻所感,华为openday所闻所感——中兴面经与华为openday(二)
python中那纠结的os.system()与空格处理
不确定性问题,考考你,一个很简单却很多人都不确定的问题
单利模式,通用代码学习笔记--单利模式
ssis教程,SSIS可靠性和扩展性—错误输出
视图索引,SQL Server 索引和视图
数据库死锁,令人无法理解的死锁案例分析
正则表达式,文本处理之利器正则表达式闪亮登场
cz3160,pku 3160 Father Christmas flymouse
最新标注
为什么使用博客
(1)
flexand
(1)
敲击右边的音叉
(1)
敲击钥匙
(1)
键盘敲击声
(1)
敲击扳手
(1)
敲击时代
(1)
json使用方法
(1)
愿景是什么意思
(1)
什么是愿景
(1)
实现企业愿景
(1)
虚拟机搭建
(1)
虚拟机搭建服务器
(1)
无线网络破解软件
(1)
无线软件
(1)
无线网络软件
(1)
无线路由软件
(1)
与或非门
(1)
或非门
(1)
交换机升级ios
(1)
最新评论