用于与dorcas api通信的python包装器
dorcas-sdk-python的Python项目详细描述
Dorcas Python3软件包
用于与dorcas api交互的python库。它使直接访问api服务变得容易 来自您的python项目。
示例用法
fromdorcas_sdk_pythonimportSdkclient_id='jAGOn0aygL'client_secret='7CDouHd526pbPubv4fFLRnw5uWjKeaIh0ymsjJ39'sdk=Sdk(client_id,client_secret,environment='local')plans=sdk('resource','Plan')plans.add_query_param('search','Pre')response=plans.send('get')response=response.send(method='post')ifresponse.is_successful():print(response.data())else:print('Something went wrong')
概述
< A/>
入门
首先,您需要在
Dorcas开发人员站点
您应该按照文档中的说明操作。
< A/>
使用软件包
这个包是为了简化与api的通信过程而构建的,使用它可以
总结为5个步骤(不包括import
语句):
- 实例化sdk
- 创建
资源或
服务实例
- 设置有效载荷(
body
或query
)- 发送请求,并接收一个
dorcasresponse
实例作为返回值- 使用
dorcasresponse对象
- 设置有效载荷(
下面是一个示例:
fromdorcas_sdk_pythonimportSdksdk=Sdk('jAGOn0aygL','7CDouHd526pbPubv4fFLRnw5uWjKeaIh0ymsjJ39',environment='local')# step 1password_login=sdk('service','PasswordLogin')# step 2password_login.add_body_param('username','fakeid@gmail.com')# step 3password_login.add_body_param('password','awesome secure uncrackable password')# step 3response=password_login.send(method='post')# step 4ifresponse.is_successful():# step 5print('Access Token: {}'.format(response.access_token))else:print('Login failed')print(response.errors()[0])
< A/>
sdk
对象
sdk
类允许您设置api身份验证详细信息:
客户ID
客户机密
它还允许您选择环境,您可以将其设置为:
- 生产:用于现场Dorcas API
- 分段:用于Dorcas测试API
您选择的环境决定将请求发送到哪个端点。
型号
这个库中有两种模型,它们是:
resource
(s):这类模型几乎总是要求对调用进行身份验证。他们通常指 数据库记录。这意味着资源
模型总是映射到数据库记录。 例如,产品
映射到API上的产品
记录服务
(s):此类模型通常指的是数据库中没有实际记录的内容 期待。例如,密码登录
服务严格用于验证用户。
sdk
对象使实例化这些模型变得容易;它也可以手动完成。要实例化模型,
你喜欢这样:
fromdorcas_sdk_pythonimportSdksdk=Sdk('jAGOn0aygL','7CDouHd526pbPubv4fFLRnw5uWjKeaIh0ymsjJ39',environment='local')resource=sdk('resource','ResourceModelClassName')# we use the Sdk instance objectservice=sdk('service','ServiceModelClassName')
所有资源
模型都扩展基类资源
类,而服务
模型扩展基类服务
类。
注意:在实例化模型时,还可以向调用传递其他的关键字参数,它们将
也会传递给模型类的构造函数,并在实例的选项
属性中收集。
您可以这样打电话:
fromdorcas_sdk_pythonimportSdksdk=Sdk('jAGOn0aygL','7CDouHd526pbPubv4fFLRnw5uWjKeaIh0ymsjJ39',environment='local')resource=sdk('resource','ResourceModelClassName',length=5,tag='general')# we use the Sdk instance objectservice=sdk('service','ServiceModelClassName',name='growth hacking')print(resource.option.tag)# generalprint(service.option.name)# growth hacking
这对于创建自己的自定义服务或
资源类的情况非常有用。
< A/>
身份验证
对api的大多数调用都要求对调用方进行身份验证;这意味着,它必须包含
有效的访问令牌
代表您进行呼叫的用户。
获取令牌有两种方法:
- 通过登录(
passwordlogin
service)活动(public-可用于所有api客户端) - 通过直接身份验证(专用-仅适用于选定的客户端)
因为这些活动总是遵循相同的过程,提供了3种实用方法来简化这些
调用(请参见helpers.py
模块):
仅通过电子邮件授权
:直接授权通过密码登录
:用户名+密码组合身份验证创建帐户
:虽然不是此功能的一部分,但提供此功能的目的是使用户注册简单到 函数调用
身份验证调用总是提供类似于以下内容的响应:
{"token_type":"Bearer","expires_in":31536000,"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjE1YTI3ZmY1ZWI0ZWNhZTczMjNhZWI2MjYwNjhkYzYyYTcxNzIwOTY2NzAwNzYxNDlhMzI1NTFjZjdlZDBkNjY4NWVkODVmYjA5NDMwNzExIn0.eyJhdWQiOiIyIiwianRpIjoiMTVhMjdmZjVlYjRlY2FlNzMyM2FlYjYyNjA2OGRjNjJhNzE3MjA5NjY3MDA3NjE0OWEzMjU1MWNmN2VkMGQ2Njg1ZWQ4NWZiMDk0MzA3MTEiLCJpYXQiOjE1MTUyNzc2MDksIm5iZiI6MTUxNTI3NzYwOSwiZXhwIjoxNTQ2ODEzNjA5LCJzdWIiOiIxIiwic2NvcGVzIjpbIioiXX0.GIBH8fuEg7bnSjm0Z3NtxuYshJ4RJVEcH-bNJPAMokLVvNSsMr4DBnYIsmJFk14pdMfiGRLqKQEZN2REgxTPj8q5a1btJwFoHqu5-nLcNGlrIKav8W8D5RtO8PZ1MHEBp-eyvu3U3-qIWe-vYan7csNdhnA0vcoZCXMU7JbAnATtahv0VjCqLo2n-VmICtYBvKfQjX3rVtp6sg4LqiChvGLDC5XoA0AYUfZdj2RvCj4oj0eC3W0y4ndcMpWkSSI1BIhZ9LyE6YloE0NNs4FB0upDoBVK_vxmwahdYsYaRgYGwu1RJf4v7hkLBvrSgwewqwTytCtfVU18EW71Pera9e9OMh1-ldZ3PiQMpBesos_bR9U2roEqfHUwJEY_1834hqiPQj_vq7E5ppMAVoWT2A9JMQIDzgZrxP7E0mynEoVohSBEvsF5VJxuUii8STcmGTo33x2dcMUYLtVNyRXHLzKjyYns_SrDtyIhyPrpYCtVNUWok_stLps6KrJFm7kJ0JB3u5-7tTP645DhPKaoMUrrodghZpkeCc_gabXtvughYgJkhlK3wixLCB1tdqR8IeuCdhWmqc31TfpfUob1Deka_jzmfxsyuu1VvIPiqdtw_Mm3RR6qQWhqfXQlpdf46SRa_lRveiOp7IXwPUFm_XSgSt8zBL5oQOm3k6r5lJo","refresh_token":"def50200ffed0e36ba02030192de5ecf0fa7b098e774ee3854c0a1d2a9b5e376d410aa435bf101fadbfd54a169a1c17a68ed27d242339c13dc318a7cb258d4ae2bcc487d0e7e9597794240bd51b24fce8ed274c55f368c0bdf8a739ceaa4e0656575de854152ba6c98126dd6b8435145d9e9d79df5bbe5114ca3da1c157447dc062be9c0cea747edfa9202f3ae036d65a532588ce91975db489c9721e53017b5b9069c5a13f51b682f5938a838dec60fb28f8ef19f62657f5f25082a376e14808f1963c1d2abd0af04a3d3a45c4e7abad8aba5b71f0245365530445a1a089604e727bce80be03ff2a24a094dc9acc22146108f3ee1e1f7efc11573c7b58e2ecc9c81241da90a0a477aeb784147c62e991b1630d07d8d9fb4ba1fc6d843408d268454c242153b04648ed9a1d8d9cf06aeeee59e33de8db4d06a569e5a9b155999f0e68226fae133dc06a88064b25032605e2be0921b069596333b108e9d124fa1b4fd0105"}
响应包含一个access_令牌
密钥,您可以在sdk
实例上设置该密钥,以便以后使用
所以:sdk.auth_token=response.access_token
在此之后,使用此sdk
实例的所有调用都将在请求中发送相应的授权头。
注意事项
您可能需要将这个访问令牌
保存在您的缓存/会话中,这样就不必验证
每个页面上的用户重新加载。
在实例化sdk时,也可以提供
auth_令牌
,如下所示:
sdk=Sdk('jAGOn0aygL','7CDouHd526pbPubv4fFLRnw5uWjKeaIh0ymsjJ39',auth_token='...',environment='local')
< A/>
提出请求
发出请求是设置有效负载后的最后一步。它只需要你知道两件事:
- 请求方法:"get"、"delete"、"post"或"put"之一
- 请求路径:每个模型都有一个基本路径,但是某些子资源可能需要将某些内容附加到 路径
第二点的示例如下:
客户
资源的基本路径为/customers
- 要从api中获得一个单独的客户模型,我们需要一个格式为:
/customers/{id}
在上述情况下,我们对send()
的调用将类似于:resource.send('get',customer.id)
< A/>
dorcasresponse
对象
dorcasresponse对象提供了一些简单的方法:
is_successful()
:如果请求成功返回,则返回true
,或者返回false
。也就是说,api调用运行良好code()
:仅当返回的响应中存在code
键时才有用message()
:当返回的响应中存在消息
键时非常有用errors()
:当成功时,
通常是错误列表
data()
:使用data
键成功响应。
从上面可以看到,除了之外的所有方法都是成功的
反应。对于没有定义方法的键,可以像访问响应对象的属性一样访问它们。
如需有关访问
访问令牌
密钥的示例,请参阅身份验证。
待办事项
- 添加文件上载支持
有问题吗?
只要在gmail.com的emmanix2002上给我写一行就行了