获取新闻稿rest api包装

ganapi的Python项目详细描述


GANAPI库提供了一个简单易用的接口,用于获取新闻稿的rest api。


pip:
``bash
pip install gan api
```

usage
----
首先创建一个来自ganapi import api的``api``对象的实例:
``python


token='…'
gan api=api(token)
````
此处的``token``变量必须包含有效的[api令牌](http://help.getanewsletter.com/en/support/api-token-2/)字符串。


\contact对象的实例表示api中的联系人实体。
它们有以下字段:

*必需字段*
*`` email````联系人的电子邮件。这也是更新或删除联系人时所需的***查找字段。

*可选字段*
*``属性```-联系人[属性]列表(http://help.getanewsletter.com/en/support/attribute overview/)。
*``名字```
*``姓````
*``列表```-订阅此联系人的新闻稿列表。

*只读字段*
*```url````-联系人的资源url。
*``active```````-如果联系人是活动的并且可以接收邮件,则为true,否则为false。
*`` updated```-上次更改的日期。
*`` created```-创建的日期。

需要。
``python
from gan api import contact manager

contact=contact\u manager.get('john.doe@example.com')
`````
manager方法将抛出一个``http error```以防来自api的http错误,所以最好是抓住它。
`` python

尝试:
contact=contact_manager.get('john.doe@example.com')
除非httperror为e:
如果e.response.code==404:
打印"找不到联系人!"
否则:
打印"api错误:'+e


````

参数](https://api.getanewsletter.com/v3/docs/contacts/get contacts)并将返回一个带有paginatedresultset.entities列表中联系人第一页的"paginatedresultset"。

``python
name@。
查询的联系人=联系人管理器。查询({'search_email':'name@'})


当前页中的联系人列表(1)
查询的联系人。实体


下一页中的联系人列表(2)如果可用,并更新paginatedresultset
查询的联系人。下一页()

在上一页(1)中,如果可用,并更新paginatedresultset
查询的"联系人.prev()


`````

="jane"

contact.save()
```
这将创建一个新联系人并保存它。同样,在调用``save()``方法时捕获异常也是一个好主意。如果联系人已经存在,API将以错误响应。
一种避免的方法是强制创建联系人,覆盖现有联系人:
``python

````

```save()``和``overwrite()``都将返回相同的联系人对象,并更新其只读字段(例如```created```,```更新了"python"。

``python

print contact.created
```

t.
contact=contact_manager.get('john.doe@example.com')
更改一些字段。
contact.first_name='john'
保存它。
contact.save()
`````
您可以通过强制进行*部分更新*
``python

contact来避免对api进行两次调用=contact_manager.create()
contact.set_persisted()
contact.email='john.doe@example.com'
contact.first_name='john'
contact.save()
`````
调用contact对象上的``set_persisted()``将其标记为已经存在并来自api。将联系人设为现有联系人时对``save()``方法的调用将只执行*部分更新*,也就是说,只更新提供的字段并跳过所有的"none"字段。
更新或删除联系人时不要忘记"email"是一个查找字段,并且是必需的。


object
list类的实例表示api中的[列表](http://help.getanewsletter.com/en/support/lists-overview/)。它们具有以下结构:

*必需字段*
*``电子邮件```-发件人电子邮件。
*``名称```-列表名称。
*``发件人```-发件人名称。
*
*可选字段*
*``说明````

*查找字段*
*``哈希``-列表的唯一性散列。




*``responderresponderresponderresponderresponderresponderresponderresponderresponderresponderresponderresponderresponderresponderresponderresponderresponderresponderresponderresponderresponderresponders```````````````
*``````````````````````````````````````````````````````````````````````````````````````````````我是说,更新和删除列表
列表上的CRUD操作与联系人上的操作没有区别:
``python


=list.save()
打印列表。已更新

=list-manager.create()
list.hash='hash''hash'查找字段
list.name='updatedatelist'
list.save()

删除列表。
list.delete()

````





<






contact.subscribu to(list)
contact.save()
br/>```
你也可以创建一个自动订阅的新联系人。
``python

contact.email='john.doe@example.com'
contact.subscribe庠to(list)
contact.save()
````
从(list)contact.unsubsubsubscribe
contact.save()
`````


```从(list)contact.save()
`````从(list)contact.delete预订
````` python


``从(list)
`` contact.save()
````


` ` ` ``从(list)contact.delete预订
`>contact.save
`.save()
br/>属性的实例类表示API中的属性实体。
它们有以下字段:

*必选字段*
*```名称`````-属性名称。

*查找字段*
*``代码`````-已删除的属性代码。更新或删除属性时必需。*名称"新属性"代码将是"a-new-attribute"*

*只读字段*
*``url````-属性资源url。
*``usage```` usage````-使用次数。



然后使用它的``get()``方法来检索所需的属性。
``python
from gan api import attribute manager

attribute=attribute manager.get('code')
````
来自api的http错误,因此最好捕获它。r/>attribute=attribute_manager.get('code')
除了httperror,如果e.response.code==404:
未找到"打印"属性!'
否则:
打印"api错误:'+e


````

同样,在调用``save()``方法时捕获异常也是一个好主意。如果属性已经存在,API将以错误响应。
一种避免的方法是强制创建属性,覆盖现有属性:
``python

attribute.overwrite()
````

``save()``和``overwrite()``都将返回同一个属性对象,并更新其只读字段(例如```url``,```用法_count```).

``python

print attribute.usage_count
`````


\35;_更新现有属性
``python

="变了!"

attribute.save()
```
对attribute对象调用``set_persistend()``将其标记为已经存在并来自api。当属性作为现有属性时对``save()``方法的调用将只执行*部分更新*,也就是说,只更新提供的字段并跳过所有"none"字段。
更新或删除属性时不要忘记"code"是一个查找字段,并且是必需的。



类型的实体可以获取所有联系人,使用其管理器上的"all()``方法在生成器中列出或属性。

*参数*
*``start````-开始索引(默认值:0)
*``stop``停止索引(默认值:float('inf')


``python
=联系所有联系人中的联系人:
打印联系人。电子邮件




stop=200)

```




manager使用``query()``.

*properties*
*``next`u link````-获取下一页结果的URL。
*``previous`u link```-获取上一页结果的URL。
*``manager`````-``entitymanager``当前使用的。
*``entities``````实体的列表当前结果页。
*`` count```-所有页中实体结果的总数。

*methods*
*`` prev()```-用上一页的结果替换实例并返回实体。
*`` next()```-用下一页的结果替换实例并返回实体。

```next()``和``prev()``如果到达方向的末尾,则会引发``stopietition````。
如果来自api的http错误,则会引发``http error``,

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

推荐PyPI第三方库


热门话题
hbm中的java异常。xml   java如何扩展JavaDoc5.0标准doclet?   java将所有非字母数字更改为+   java如何使用JSP从URL获取参数   把java学校的程序员变成C或C++程序员有多难?   java使用HTML获取表内容   java在JPanel中使用repaint()方法而不删除已绘制的内容   rest如何在Java中动态映射同一父类的子对象列表   如果协议不是http或https,java如何解析URL?   java删除文本时如何在eclipse中隐藏建议框?   java代码名1 GPS跟踪器   java寻找骑士所有独特的可能动作   从一个管道到另一个进程的java InputStream仍然被阻塞   java在阶段后将子项添加到窗格。show()   java如何确保在子对象中调用超级方法?   java从json对象获取值   java使用多线程读取文件   java Struts 1.1+Hibernate 3.2集成