python 调用接口

摘要:
例如获得分销用户的方法的API.用户的api文档fromapp.external.yz.api_utilimportYzApiUtilclassYzUserApi:"""有赞会员Api"""defget_follower:"""根据微信粉丝用户的weixin_openid或fans_id获取用户信息:paramfans_id::paramweixin_openid::return:"""params={}iffans_id:params['fans_id']=fans_idelifweixin_openid:params['weixin_openid']=weixin_openidelse:returnNonedata=self._invokeif'response'indata:returndata['response']['user']else:returnNonedefget_customer:"""获取客户详情:paramfans_id::parammobile::paramyouzan_account::return:"""params={}iffans_id:params['account']='{"account_type":"FansID","account_id":"'+str+'"}'elifmobile:params['account']='{"account_type":"Mobile","account_id":"'+str+'"}'elifyouzan_account:params['account']='{"account_type":"YouZanAccount","account_id":"'+str+'"}'else:returnNonedata=self._invokeif'response'indata:returndata['response']else:returnNonedefget_openid:"""使用手机号获取用户openId(获取的商家自有粉丝的openId。fans_type=1时):parammobile:会员手机号:return:{"open_id":"oTtVis-xiMQjlBME5Xi4Bc_twuqA","union_id":"oqY0-wpXFmBsPI2IrTUYx3DigfjY"}"""params={'mobile':mobile,}data=self._invokeif'response'indata:returndata['response']else:returnNonedefimport_user:"""导入三方帐号信息,用于App开店帐号一键授权:doc:https://open.youzan.com/v3/apicenter/doc-api-main/1/2/account_import/youzan.user.platform.import"""params={'country_code':'+86','mobile':'17392940060','open_user_id':'17392940060',}data=self._invokeif'response'indata:returndata['response']else:returnNone2项目中接口服务测试接口通的数据代码:fromapp.external.yz.user_apiimportYzUserApifromapp.model.yz_userimportYzUserfromapp.utils.x_loggerimportloggerclassYzUserTestService:"""有赞用户TestService"""#这是测试看是否通def__init__:self.yz_api_user=YzUserApi()defget_user:user=self.yz_api_user.get_customerlogger.inforeturnuser#主程序执行,理论上下面的这些不要写在里面。

这个比较乱,抽口再修改一下。

工作需要调有赞API的接口数据, 返回数据. 进行数据处理

现在两部分比较重要:1 自动获取数据 , 2处理excel的过程.

  1. 明白接口的过程.传入参数

https://open.youzan.com/v3/apicenter/doc-api-main/1/2/salesman/youzan.salesman.trades.get

这个地址里面,都有 各个很细的API 过程. 例如

python 调用接口第1张

导入 外部API 。例如获得分销用户的方法的API .

python 调用接口第2张

用户的api 文档

from app.external.yz.api_util importYzApiUtil


classYzUserApi(YzApiUtil):
    """有赞会员Api
    """

    def get_follower(self, fans_id=None, weixin_openid=None):
        """根据微信粉丝用户的 weixin_openid 或 fans_id 获取用户信息
        :param fans_id:
        :param weixin_openid:
        :return:
        """
        params ={}

        iffans_id:
            params['fans_id'] =fans_id
        elifweixin_openid:
            params['weixin_openid'] =weixin_openid
        else:
            returnNone

        data = self._invoke('youzan.users.weixin.follower.get', '3.0.0', 'GET', params=params)

        if 'response' indata:
            return data['response']['user']
        else:
            returnNone

    def get_customer(self, fans_id=None, mobile=None, youzan_account=None):
        """获取客户详情
        :param fans_id:
        :param mobile:
        :param youzan_account:
        :return:
        """
        params ={}

        iffans_id:
            params['account'] = '{"account_type":"FansID","account_id":"' + str(fans_id) + '"}'
        elifmobile:
            params['account'] = '{"account_type":"Mobile","account_id":"' + str(mobile) + '"}'
        elifyouzan_account:
            params['account'] = '{"account_type":"YouZanAccount","account_id":"' + str(youzan_account) + '"}'
        else:
            returnNone

        data = self._invoke('youzan.scrm.customer.get', '3.1.0', 'GET', params=params)

        if 'response' indata:
            return data['response']
        else:
            returnNone

    defget_openid(self, mobile):
        """使用手机号获取用户openId(获取的商家自有粉丝的openId。fans_type =1时)
        :param mobile: 会员手机号
        :return:
        {
          "open_id": "oTtVis-xiMQjlBME5Xi4Bc_twuqA",
          "union_id": "oqY0-wpXFmBsPI2IrTUYx3DigfjY"
        }
        """
        params ={
            'mobile': mobile,
        }

        data = self._invoke('youzan.user.weixin.openid.get', '3.0.0', 'GET', params=params)

        if 'response' indata:
            return data['response']
        else:
            returnNone

    defimport_user(self):
        """导入三方帐号信息,用于App开店帐号一键授权
        :doc: https://open.youzan.com/v3/apicenter/doc-api-main/1/2/account_import/youzan.user.platform.import
        """
        params ={
            'country_code': '+86',
            'mobile': '17392940060',
            'open_user_id': '17392940060',
        }

        data = self._invoke('youzan.user.platform.import', '1.0.0', 'GET', params=params)

        if 'response' indata:
            return data['response']
        else:
            return None

2 项目中接口服务

python 调用接口第3张

测试接口通的数据代码:

from app.external.yz.user_api importYzUserApi
from app.model.yz_user importYzUser
from app.utils.x_logger importlogger


classYzUserTestService:
    """有赞用户Test Service
    """
# 这是测试看是否通
def __init__(self): self.yz_api_user =YzUserApi() defget_user(self, mobile): user = self.yz_api_user.get_customer(mobile=mobile) logger.info(user) returnuser
#主程序执行,理论上下面的这些不要写在里面。 执行数据保存
if __name__ == '__main__': result_user = YzUserTestService().get_user("18874189337")
# 用户传入参数 yz_user
=YzUser() yz_user.name = result_user['name'] yz_user.telephone = result_user['mobile'] yz_user.save() a = 1

3 保存mysql 数据库表里

python 调用接口第4张

在mabao51数据库里建好同样数据结构的表

from app importdb


classYzUser(db.Model):
    #自定义表名:
    __tablename__ = 'yz_user'id = db.Column(db.BigInteger, primary_key=True)
    name = db.Column(db.String(50), nullable=False, default='')
    telephone = db.Column(db.String(20), default='')

    defsave(self):
        db.session.add(self)
        db.session.commit()


if __name__ == '__main__':
    db.create_all()
    #test = YzUser.query.get(1)
a = 1

免责声明:文章转载自《python 调用接口》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python 中把一个list 列表分组/分块sql 数据库实时增量更新下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Gvim —— win 7 下 vim 环境配置 及python开发常用设置

不能不承认,notepad++是一个非常优秀的文本编辑器,上手方便,能装很多插件,可以直接编译C++、Java、python等语言。但经常碰鼠标确实是一件非常恼火的事情(快捷键真心不够)。 当然,练习在vim环境下编程也会非常辛苦,这里是主流文本编辑器学习曲线。之前也没太认真学,只是勉强能用。直到看到师父在在vim上灵动的操作后,突然就很想拥有这个“技能”...

python 文件操作

读取文件:r,只读不能写,文件不存在报错 #打开文件 file_object=open('log.txt',mode="r", encoding='utf-8')#读取:mode为r,只读不能写,文件不存在,报错 # 读取内容, content=file_object.read() print(content) #关闭文件 file_object....

Python命名规范

文件名 全小写,可使用下划线 包 应该是简短的、小写的名字。如果下划线可以改善可读性可以加入。如mypackage。 模块 与包的规范同。如mymodule。 类 总是使用首字母大写单词串。如MyClass。内部类可以使用额外的前导下划线。   函数&方法 函数名应该为小写,可以用下划线风格单词以增加可读性。如:myfunction,my_exa...

使用原生 python 造轮子搭建博客

这篇用来 记录一个 从零开始的 博客搭建,希望坚持下去,因为python 开发效率令人发指,所以会原生从零写 ORM ,Web 框架 前提是打好 异步 io 的基础, 使用异步,有一点要谨记,一旦开始异步,层层异步,从 http 到 数据库层都要用异步框架写异步函数,所谓开弓没有回头箭 # -*- coding: utf-8 -*- import asy...

Linux 定时循环执行 python 脚本

本文主要介绍在linux环境下,定时循环执行python脚本的两种方法。 方法一: nohup vim time.py 1 import time 2 while(True): 3 #time.sleep(1) 4 with open('time.log', 'a+') as logfile: 5 logfile.write...

Python基础:第一个Python程序(2)

1.Python Shell 1.1 Windows命令 (1)【开始】|【运行】,输入cmd回车,进入Windows命令界面。 (2)输入python,回车,进入Python Shell。 1.2 IDLE Python开始菜单中点击IDLE,启动Python Shell。 2.Python文件 2.1 py源码文件 hello_world.py:...