编写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
目的的许可,无论是否收费,如果上述版权声明和本许可声明出现在所有副本中。
在任何情况下,作者均不对因使用、数据或利润损失而产生的任何特殊、直接、间接或后果性损害或任何损害负责,无论是在合同诉讼、疏忽或其他侵权诉讼中,由
引起的,或与此软件的使用或性能有关的。
描述:===
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
引发异常(
"不支持的内容类型{}'"
.format(response.headers['content-type'])
)
data=json.loads(response.content)
返回数据
-然后定义您的基本"资源":
…代码块::python
类资源(wac.resource):
-最后是实际资源:
。代码块::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