...

案例6-YApi Python SDK开发

需求描述

假设YApi是你公司产品,或你们自动化需要经常与YApi平台进行交互,需要你开发一款Python库,并封装一下YApi平台的常用操作,如创建项目、新建接口、接口分类、添加用户、添加测试集合等等。例如
安装你的库后:

pip install python-yapi

可以使用以下方式来操作YApi平台

from python_yapi import YApi

yapi = YApi(base_url='http://localhost:3000')
yapi.login('admin@admin.com', 'ylme.org')

# 添加项目
project = yapi.add_project('Demo Project')

# ....

什么是SDK
SDK(Software development kit) 软件开发包,是软件或平台面向开发者的一种快速开发工具或套件,使开发者可以更方便、灵活的使用软件或平台功能。
一般(比较注重生态的)软件或平台会提供不同语言或平台或框架的包,来适用不同的开发者。例如Selenium就提供了Python、Nodejs、Java等各种软件的SDK,这也是其比较流行的原因之一。

sdk的使用方式可以自己设计,最好简单易用
参考常见平台Python版本sdk使用方式:

YApi安装参考

Windows部署YApi

  1. 安装mongodb 默认安装(安装较慢)- 安装包见群文件
  2. 安装node 14 默认安装 - 安装包见群文件
  3. 打开命令行执行
npm install -g yapi-cli --registry https://registry.npm.taobao.org
  1. 安装完 命令行运行
yapi server
  1. 打开 http://localhost:9090/ 选一个版本(我选的1.12),填一个 企业名称,其他不变-点击部署(等待部署完 忽略node-gyp错误)
  2. 打开命令行cd 进入用户目录下的 my-yapi目录,运行
node vendors/server/app.js
  1. 访问 http://localhost:3000 点击登录 默认用户名admin@admin.com / ymfe.org

MacOS部署YApi

  1. 安装nvm (用于安装管理多个版本的node)
brew install nvm

安装好后根据提示将需以下配置添加到你的命令行配置文件中(我的是~/.zhsrc)
vim ~/.zshrc, 在末尾添加如下配置:

export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/nvm.sh" ] && \. "/usr/local/opt/nvm/nvm.sh"  # This loads nvm
[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/usr/local/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion

然后执行source ~/.zshrc使配置生效。

使用nvm安装并切换到node10.24.1

nvm install 10.24.1
nvm use 10.24.1

使用node -v查看版本。

  1. 安装mongodb
brew tap mongodb/brew 
brew install mongodb-community

如果brew tap mongodb/brew 添加失败可以考虑执行sudo chown -R "$USER":admin /usr/local 来修改下/usr/local的权限。

安装后启动mongodb

brew services start mongodb-community

如果需要操作mongodb数据库,可以安装monogdb shell: brew install mongodb-community-shell

  1. 安装yapi-cli
npm install -g yapi-cli --registry https://registry.npm.taobao.org
  1. 安装完 命令行运行
yapi server

启动安装服务
5. 打开 http://localhost:9090/ 选一个版本(我选的1.12),填一个 企业名称,其他不变-点击部署(等待部署完 忽略node-gyp错误)

安装时如果遇到:Error: getaddrinfo ENOTFOUND yapi.demo.qunar.com yapi.demo.qunar.com:80

找到npm全局包路径

npm root -g

例如,我的是:/Users/superhin/.nvm/versions/node/v14.21.3
在里面的/lib下面找到yapi-cli目录,cd进入yapi-cli目录,修改server.js

cd <你的npm全局包路径>/lib/yapi-cli
vim src/commands/server.js

注释调日志上报部分如下图(注意⚠️ js用// 注释)
image

  1. 打开命令行cd 进入用户目录下的 my-yapi目录,运行
node vendors/server/app.js

启动服务。

  1. 访问 http://localhost:3000 点击登录 默认用户名admin@admin.com / ymfe.org

提示

  • 可以通过浏览器抓包不同操作接口并结合requests封装接口来实现不同操作
  • YApi提供了两套接口,一是基于Cookie/Session授权机制的平台操作,另外是单个项目的基于token的开放api,这里可以只用第一种。
  • 可以基于requests.session()来封装并保留登录后的会话,已使得其他操作(带授权)可以正常进行

YApi开放Api参考

参考依赖库

  • requests

主要练习点

  • 授权处理及业务接口封装
  • 软件打包及发布

项目结构

  • 可以使用cookiecutter通过模板生成Python项目结构
    安装cookiecutter
python3 -m pip install cookiecutter

使用模板创建Python项目

python3 -m cookiecutter https://github.com/audreyr/cookiecutter-pypackage

根据命令行提示、输入项目基本信息,并选择即可。
示例如下:

python3 -m cookiecutter https://github.com/audreyr/cookiecutter-pypackage

You've downloaded /Users/superhin/.cookiecutters/cookiecutter-pypackage before. Is it okay to delete and re-download it? [yes]: yes
full_name [Audrey Roy Greenfeld]: Han Zhichao    # 作者全名
email [audreyr@example.com]: superhin@126.com  # 作者邮箱
github_username [audreyr]: hanzhichao   # 作者 github用户名
project_name [Python Boilerplate]: python-yapi  # 项目名称
project_slug [python_yapi]:    # 包名称
project_short_description [Python Boilerplate contains all the boilerplate you need to create a Python package.]: YApi python sdk   # 项目描述
pypi_username [hanzhichao]:  # 作者pypi用户名(用于发布)
version [0.1.0]:   # 项目当前版本
use_pytest [n]: y  # 使用使用三方包pytest
use_black [n]: y   # 是否使用三方包black (代码格式化工具)
use_pypi_deployment_with_travis [y]:  # 是否使用travis (持续集成工具)
add_pyup_badge [n]: y  # 是否添加pypi状态小标签
Select command_line_interface:  # 选择命令行接口工具
1 - Click   # 使用三方包click
2 - Argparse  # 使用内置包argparse
3 - No command-line interface  # 不添加命令行接口
Choose from 1, 2, 3 [1]: 2
create_author_file [y]: y  # 是否创建作者说明文件
Select open_source_license:  # 选择开源协议
1 - MIT license
2 - BSD license
3 - ISC license
4 - Apache Software License 2.0
5 - GNU General Public License v3
6 - Not open source
Choose from 1, 2, 3, 4, 5, 6 [1]: 1

Sphinx 自动生成Api文档参考:https://sphinx-apidoc.readthedocs.io/zh_CN/latest/gettingstarted/genapi.html

posted @ 2023-06-26 21:17  韩志超  阅读(374)  评论(0编辑  收藏  举报