前面的web.py学习笔记那篇简单介绍了下web.py如何实现RESTful,现在是微服务的天下,所以有必要把RESTful单独来一个完整的例子,于是有了这篇。
准备
这篇实现的例子很简单,就是一个对人员的增删改查。先来个表格:
方法 | URI | 描述 | 返回值 |
---|---|---|---|
GET | /persons | 获得所有人员信息列表 | 返回资源对象的列表 |
POST | /persons | 新增人员 | 返回新生成的资源对象 |
GET | /persons/id | 获得具体人员信息 | 返回单个资源对象 |
PUT | /persons/id | 整体更新具体人员信息 | 返回完整的资源对象 |
PATCH | /persons/id | 局部更新具体人员信息 | 返回完整的资源对象 |
DELETE | /persons/id | 删除具体人员信息 | 返回一个空文档 |
其中PATCH
方法就先不实现了,下面就是按照上表逐步实现一个RESTful。
建表
还是像以前说的那样,我这就是个例子,就直接用sqlite了。先建个person表再在里面插入几条记录,看例子:
1 | #-*- coding:utf-8 -*- |
实现
下面是RESTful实现的例子,虽然很小,但基本功能应该都有了。
1 | #-*- coding:utf-8 -*- |
上面的例子中的PUT和POST并没有按照RESTful API的返回规范进行返回,既然这么写了,也不想改了,以后注意一下啊。
测试
这里先说一下我的测试环境:
- 以上python代码是运行在win7下的。
- 测试rest是用的win7下的gitbash里带的curl。
这样的情况下传递中文原来是有错的,上面代码中是我根据实际情况调整过的,不知道换到linux下会不会有问题。
下面是测试命令:
1 | curl -XGET 'http://localhost:8080/persons' |
参考
http://webpy.org/cookbook/
https://piaosanlang.gitbooks.io/web-py/content/index.html
总结
通过这个例子应该能知道基本的RESTful是如何实现的。