编写restful api客户端。

finix-wac的Python项目详细描述


特此授予使用、复制、修改和/或分发本软件用于任何
目的的许可,无论是否收费,如果上述版权声明和本许可声明出现在所有副本中。

在任何情况下,作者均不对因使用、数据或利润损失而产生的任何特殊、直接、间接或后果性损害或任何损害负责,无论是在合同诉讼、疏忽或其他侵权诉讼中,由
引起的,或与此软件的使用或性能有关的。


描述:===
wac
===


>要为restful api编写友好的客户端,通常需要执行以下操作:

-write用于与服务器通信的http客户端命令。这些命令执行诸如封送有效负载、转换错误、调用请求挂钩等操作。

-将客户端反序列化的响应转换为资源对象(即
将响应对象化)。

-生成查询(如筛选,sort)按特定顺序访问符合某些条件的资源。

此库旨在帮助您编写这样一个
客户端,前提是您正在使用的api符合一些基本的
约定:

-正确使用http。

-使用类型和uri注释资源表示信息。

要求
----

-`python<;http://python.org/>;``Ugt;=2.6,<;3.0
-`requests<;https://github.com/kennethreitz/requests/>;``Ugt;=1.2.3

此示例的代码位于"example.py"中。

-首先导入wac:

…代码块::python


-下一步定义客户端的版本:

…代码块::python

代码块::python

default_config=wac.config(none)


-现在请友好地定义一个用于更新配置的函数:

…代码块::python

def configure(根URL,**kwargs):
default=kwargs.pop('default',正确)
kwargs['client_agent']='示例客户机/'+\uu版本
如果'headers'不在kwargs中:
kwargs['headers']={}
kwargs['headers']['accept-type']='应用程序/json'
如果默认:
默认配置重置(根url,**kwargs)
否则:
client.config=wac.config(根url,**kwargs

-现在是大配置,定义您的"client",这将用于与服务器对话:

…代码块::python

class client(wac.client):

config=default\onfig

def序列化(self,data):
data=json.dumps(data,default=self.\u default序列化)
返回"application/json",data

如果是response.headers['content-type']!='应用程序/json':
引发异常(
"不支持的内容类型{}'"
.format(response.headers['content-type'])

data=json.loads(response.content)
返回数据

-然后定义您的基本"资源":

…代码块::python


类资源(wac.resource):

registry=wac.resourceregistry()

-最后是实际资源:

。代码块::python

class playlist(资源):


type='playlist'




class song(资源):

键入"song"

uri-gen=wac.urigen('/v1/songs','{song}')



-完成!现在你可以做这样疯狂的事情:

…代码块::python

import example

example.configure('https://api.example.com',auth=('user','passwd'))


q=(example.playlist.query()
.filter(playlist.f.tags.contains('nuti'))
.filter(~playlist.f.tags.contains('sober'))
.sort(playlist.f.created_at.desc())
对于q中的播放列表:
song=playlist.songs.create(
name='drives',
length=1234,
tags=['nuti','fluti'])
song.length+=101
song.save()


----


>1。分叉
2.创建功能分支(`git checkout-b my new feature`)
3。编写代码**和测试**
4。确保所有测试仍然通过(`python setup.py test`)
5。提交更改(`git commit-am'add some feature`)
6.推到分支(`git push origin my new feature`)
7。创建新的拉取请求



…:变更日志:

history
----


0.29(2016-11)
+++++++++++在页资源中找不到Total属性
*需要请求>;=1.2.3.

平台:未知
分类器:预期受众::开发人员
分类器:开发状态::4-测试版
分类器:自然语言::英语
分类器:主题::软件开发::库::python模块
分类器:许可证::OSI批准:isc许可证(iscl)
分类器:编程语言::python
分类器:编程语言::python::2.7

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

推荐PyPI第三方库


热门话题
爪哇领导人选举   java查询MongoDB数组并使用最匹配的元素进行排序   java使用Maven在Tomcat上生成和访问WSDL   java从给定列表中做出不同的选择   java读取netflow/rflow(ddwrt)数据包内容   jaxb反序列化XML以在Java中动态创建类   通过Java执行的Curl命令在windows中有效,而不是在linux中   java同步方法是否阻止更新对象字段?   带有自定义适配器崩溃应用程序的java Android ListView   java字符串到字符串数组的转换   使用redis缓存java对象:为什么它比ConcurrentHashMap更好?   java再次加载jni库时会发生什么?   java ClassNotFoundException在JustSerialized类的反序列化期间发生