此模块使为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条规则。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java ArrayIndexOutOfBoundsException,但不访问任何索引   用JAVA代码复制的奇怪结果   基于当前用户的Java目标目录   运行时错误java scanner不接受中间有空格的两个单词   java Android从editText获取文本   枚举内的java搜索   java自定义布局高度包装内容,而不是使用定义的布局高度   Java 5中引入的Enum类的用途是什么?   excel如何在java swing中查看xls文档   java如何模拟影响对象的void返回方法   Java线程之间的多线程数据交换   JavaSpring引导:库是否会从父应用程序/服务获取依赖关系   java经过一段时间的循环:为什么刚刚写入的数组是空的?   Regex和java忽略引号内的关键字和字符串   oracle我正在从java读取文本文件(逗号作为分隔符)