访问simpl games api的python客户端

simpl-client的Python项目详细描述


https://travis-ci.com/simplworld/simpl-client.svg?token=cyqpBgqLC1o8qUptfcpE&branch=master

用于异步访问simple games api的python客户端。

用法:

from simpl_client.async import GamesAPIClient
async_games_client = GamesAPIClient(url=SIMPL_GAMES_URL, auth=SIMPL_GAMES_AUTH)

要同步访问Simple Games API,请使用:

from simpl_client.sync import GamesAPIClient
sync_games_client = GamesAPIClient(url=SIMPL_GAMES_URL, auth=SIMPL_GAMES_AUTH)

安装

pip install simpl-client

端点

端点在主实例上可用作属性。

.all()

检索所有资源(本质上是端点上的简单GET):

async_games_client.runusers.all()  # GET /runusers/

.filter(**kwargs)kwargs作为查询字符串值调用GET

async_games_client.runusers.filter(run=12, world=1)  # GET /runusers/?run=12&world=1

.get(**kwargs)

.filter()的特例。

如果kwargs包含idpkslugusername,则该值将 按顺序在url路径中使用。

否则,它调用一个GET,将kwargs作为查询字符串值。

如果返回的列表为空,则将引发ResourceNotFound

如果返回的列表包含超过1个资源,将引发MultipleResourcesFound

注意.get()将返回Resource,而不是Resources的列表

async_games_client.runusers.filter(run=12, world=1)  # GET /runusers/?run=12&world=1
async_games_client.runusers.filter(id=12)  # GET /runusers/12/
async_games_client.users.filter(username='alice')  # GET /users/alice/

.create(payload)

将产生一个POST,并以payload(adict)作为请求的主体, 返回新的Resource

runuser = async_games_client.runusers.create({'run': 12, 'world': 1})  # POST /runusers/

.get_or_create(defaults, **kwargs)

发出获取资源的get。如果找不到资源,则发布帖子 创建资源。

# Assuming it doesn’t exist run = myclient.run.get_or_update(game=12, defaults={‘active’: True}) # GET /runs/?game=12, then POST /runs/

.create_or_update(payload)

如果payload包含名为'id'的密钥,则将发出PUT,否则 它将调用.create

runuser = async_games_client.runusers.create_or_update({'id': 1234, 'world': 1})  # PUT /runusers/1234/

.delete(pk)

将发出DELETE,并将使用pk作为url的一部分:

async_games_client.runusers.delete(24)  # DELETE /runusers/24/

资源

所有终结点方法(除了.delete())都返回 ResourceResources的列表。

Resource只是dict的包装类,在这里可以访问键 作为财产。

另外,Resources有一个名为.payload的特殊属性,它 包含从服务器接收的原始负载。

Resources有以下方法:

Resource.delete()将产生一个DELETE,其中Resource.id为 url的par:

runuser = async_games_client.runusers.create({'run': 12, 'world': 1})  # POST /runusers/
runuser.delete()  # DELETE /runuser/345/ -- the ID 345 was returned by the server in the previous response

Resource.save()将产生一个PUT,其中Resource.id为 url的par:

runuser = async_games_client.runusers.create({'run': 12, 'world': 1})  # POST /runusers/
runuser.run = 13
runuser.save()  # PUT /runuser/345/

批量请求

async_games_client.bulk.results.create([...], return_ids=False)
async_games_client.bulk.results.delete(**lookup)

详细路线

async_games_client.scenario(id=123).rewind()

设置开发环境

git clone git@github.com:simplworld/simpl-client.git
cd simpl-client
mkvirtualenv simpl-client
pip install -e .

测试

python setup.py test

运行测试需要安装libmagic

在OSX上,只需运行^{TT49}$。

许可证

版权所有©2018宾夕法尼亚大学沃顿商学院

此程序是免费软件;您可以重新分发它和/或 根据GNU通用公共许可条款修改 由自由软件基金会出版;或者是第2版 或(由您选择)任何更高版本。

这个程序的发布是希望它能有用, 但没有任何保证;甚至没有 适销性或适合某一特定目的的适销性。见 GNU通用公共许可证了解更多详细信息。

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

推荐PyPI第三方库


热门话题
java Hibernate即使在关闭会话后仍在oracle db中保持非活动会话   java为什么在定义hashCode()和equals()之后,我的代码仍然比较链接   Java中的随机如何随机选择字母(az)?   java为什么这个方法没有在系统中实现?另外,在代码的第一位下面还有第二个问题   如何转换证书。对。使用Java编程的pfx   java“无法构建实体管理器工厂”在运行用Maven编译的jar文件时出现Hibernate异常   多线程Java线程安全:当必须调用实例变量上的方法时,如何处理实例变量   macos如何从MacOSX应用程序中的自定义协议URL获取java代码中的URL字符串   Java密码密钥转换无法正常工作   java如何使用自定义字体/书法更改tabLayout的字体   java无法在Windows上运行带有JavaFX 11的Maven shaded jar   java如何在字符串排序数组中计算等于字符串   Java 2D游戏检查玩家是否触摸到另一个精灵   java javafx tableview仅在排序后更新数据   java如何按参数类型选择重载方法?   java如何返回字段不存在的所有文档,但如果字段存在,则返回值为“tag1”的文档   java SLES Apache Solr启动。jar,无法访问jar文件