轻易云集成平台支持使用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/python3
import json
# 自定义调度方法,并且返回请求参数
def dispatch(params):
# handle todo
return 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/python3
import json
def handleResponse(params):
# handle todo
return 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 connect
return 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 | ||