轻易云集成平台支持使用Python进行适配器与SDK开发。在准备开发之前先需要了解适配器与SDK的一些约定规范。
每个适配器都必须要包含两个方法,分别是:
- dispatch 调度队列方法
- handleResponse 对API响应进行处理的方法
在进行python二开时,针对三种方法都有固定的输入、输出参数格式。
dispatch-调度队列方法
调度者主要职责是生成一个正确的API请求参数JSON,然后将这个请求参数放入到源平台队列池中进行排队处理。
1、在python二开dispatch方法中,集成平台会向其输入一个预生成的请求参数JSON变量;
2、二开方法可以对此请求参数JSON变量加工处理之后返回给集成平台;
3、集成平台收到新的请求参数后将放入到队列中进行排队执行;
输入参数
{// 根据配置生成的请求基本参数// 以旺店通查询订单为例:https://open.wangdian.cn/qyb/open/apidoc/doc?path=trade_query.php"request": {"status": 4,"start_time": "2022-01-03 12:00:00","end_time": "2022-01-03 13:00:00"},// 集成平台的配置元数据"metadata": {"api": "trade_query.php","type": "QUERY","method": "POST","number": "assNo","id": "assId","pagination": {"pageSize": 50},"idCheck": true,"request": [{"parent": null,"label": "开始日期","field": "status","type": "string","value": "4","id": "status"}]},// 原始数据(只有在目标平台的调度者下才会有)"source": {}}
输出参数
api request params json
根据自定义逻辑处理加工后的请求次数,按照输入参数格式要求返还JSON字符串。
示例
#!/usr/bin/python3import json# 自定义调度方法,并且返回请求参数def dispatch(params):# handle todoreturn params;# 此处为接收集成平台参数的入口位置,不要进行修改if __name__ == "__main__":# sys.argv[1]print(dispatch(sys.argv[1]))
handleResponse-处理API响应的方法
处理响应方法主要是在SDK调用完接口之后,接收响应结果。并对响应的结果进行一些逻辑判断(例如是否响应成功)、对返回的数据进行二次加工。
输入参数
{// SDK invoke 后接入平台返回的原始响应数据。根据每个平台而不同。// 以下只是常规示例"response" : {"success":true,"msg":"订单查询成功","orderList": [{// 具体的数据}]},// SDK 发送的请求数据"request":{"status": 4,"start_time": "2022-01-03 12:00:00","end_time": "2022-01-03 13:00:00"},// 集成平台的配置元数据"metadata":{}}
输出参数
python适配器需要按照固定格式返回的 api response json 。
{// 返回响应的具体状态,该状态为轻易云定义的逻辑枚举// 1=>重复的// 2=>成功的// 3=>错误的// 4=>负库存// 5=>队列中// 6=>基础资料错误"status": 2,// 非必要的"message": "返回的消息提示" ,// 如果是一个源平台查询响应,则必须要将查询出来的结果,以数组的方式放入 data"data": [],// 如果是一个目标平台写入响应,并且该平台有返回写入的主键ID,以数组的方式放入 ids"ids":[]}
示例
#!/usr/bin/python3import jsondef handleResponse(params):# handle todoreturn params;# 此处为接收集成平台参数的入口位置,不要进行修改if __name__ == "__main__":# sys.argv[1]print(handleResponse(sys.argv[1]))
SDK-实现
自定义的Python 需要对外暴露两个方法,分别是connect与invoke。
- connect 用于实现与平台的初始化连接,在该方法中可以处理类似 oauth2.0 认证
- invoke 用于实现具体的接口调用通用方法,在此方法中实现调用并返回原始的响应数据
示例
```python import hashlib import datetime import calendar import time import urllib import urllib.parse import requests
if name == “main“: func = sys.argv[1] if func == ‘connect’: print( connect(sys.argv[2]) ) else: print( invoke(sys.argv[2],sys.argv[3],sys.argv[4]) )
def connect(connectParams):
# handle connectreturn true
def invoke(api,params,method):
# handle invoke
return response
<a name="xEYEA"></a>
## Python 代码直连基础服务
在python扩展开发时,经常需要访问一些基础服务,甚至要直接访问mongodb。以下提供了一些快捷方法可以帮助开发提升效率。
<a name="EVXo4"></a>
### 示例
```python
import commonds
status, output = commands.getstatusoutput('php artisan cache:get ????')
php artisan command
| 命令行 | 参数 | 说明 |
|---|---|---|
| cache:get ? | cacheKey 缓存key | 从缓存中取出一个值 |
| cache:set ? ? ? | cacheKey 缓存key data 需要缓存的数据 expire 过期时间(非必要,默认8400秒) |
设置一个缓存 |
| cache:increment | ||
| cache:decrement | ||
