用于与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语句):

  1. 实例化sdk
  2. 创建资源或服务实例
  3. 设置有效载荷(bodyquery
  4. 发送请求,并接收一个dorcasresponse实例作为返回值
  5. 使用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的大多数调用都要求对调用方进行身份验证;这意味着,它必须包含 有效的访问令牌代表您进行呼叫的用户。

获取令牌有两种方法:

  1. 通过登录(passwordloginservice)活动(public-可用于所有api客户端)
  2. 通过直接身份验证(专用-仅适用于选定的客户端)

因为这些活动总是遵循相同的过程,提供了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上给我写一行就行了

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

推荐PyPI第三方库


热门话题
java如何在表被注释到配置之前获取表的元数据?   java滚动条不会出现在JList上   java JOGL监视器GPU内存   java为什么要使用RecyclerView onDraw延迟   java定制Oppo Reno 2 Z CPH1951(手机型号)的固件(闪存文件)   java自定义线程池执行器   java如何解决发布版本中重复的jar条目[com/安卓/volley/R.class]?   java如何使用Bukkit API触发事件?   java在blazemeter jmeter RTE插件中使用ctrl+w输入   C#/Visual Studio的java JDT等价物   java为什么当maxread值很大而收到的消息数量很小时,卡夫卡消费者会无限期消费?   java游戏2。x:包含模板列表的绑定模型   带压缩的java日志旋转   运行时。exec用java运行程序读取它正在做什么