此模块使为rest服务编写客户端api变得与get一样简单(“my_api/{some_param}”)
prest的Python项目详细描述
为rest服务编写python api是一项相当枯燥的任务。 普雷斯特打算为你做所有的猴子工作。采取 看一个例子:
from prest import EasyRestBase, GET, POST, DELETE class MyRestfullAPI(EasyRestBase): list_objs = GET('objects') get_obj = GET('objects/{id}') del_obj = DELETE('objects/{id}') create_obj = POST('objects') select_objs = GET('objects/filter') objs_by_type = GET('objects/{type}') conn = MyRestfullAPI("http://some.api.com/my_api/v2.0") print conn.list_objs() obj_id = conn.create_obj()['id'] conn.select_objs(color='read') conn.del_obj(id=obj_id) conn.objs_by_type(type='red')
http方法有6个基本功能:
- 获取
- 发布
- 放置
- 补丁
- 删除
- 头部
他们每个人 需要相对路径并返回函数。这 函数依次获取一个连接和一组 参数,在url中插入其中一些参数(如果有占位符)。 附加所有其余的get/post参数,并使 一个http请求。函数接收结果,将其解包并将结果返回给调用方。
因此,只需要一行代码就可以为 每次休息。
如果get/…调用的结果被分配给 从prestbase继承的类的类方法 然后调用从self获取连接。
同时您可以单独使用:
from prest import GET, Urllib2HTTP_JSON get_cluster_data = GET('data/{cluster_id}') conn = Urllib2HTTP_JSON("http://my_api.org") print get_cluster_data(conn, cluster_id=11)
urllib2http_json和prestbase 接受附加头的字典结束回显 参数。urllib2http_json使用json.dumps和 加载以相应地序列化和反序列化数据。
参数调度规则:
func = GET('a/b/{c}/{d}?m={m}') func(positional_param, **names_params)
- 所有命名参数,与url中的占位符匹配 将被格式化为url。
- 从与占位符不匹配的命名参数, 将创建字典,并作为请求传递 尸体。
- 如果不是所有url占位符值都以命名方式提供 所有其他值都是从self中获取的, 如果api函数在类内。
- 如果在参数中也找不到某个占位符 不在self中(或不提供self-如果是独立的 功能)。将引发valueerror。
- 最多允许一个位置参数。如果位置 参数将用作整个请求正文。 本例中的所有命名参数都应格式化为url。 如果提供了额外的命名参数-valueerror 会被提高。
还有一个面向对象的api-请 看一看测试报告。我没有写任何文件 对它来说,因为它现在打破了python zen的第17条规则。