1.配置文件
新建config.py(config包)
2.登录
新建login.py模块(lib-apiLib)
根据接口文档,可知道登录接口的密码需要md5加密
接口文档,如有需要,可在评论区留言!!!
login.py代码
# -*- coding: utf-8 -*-
# @File : login.py
# @Time : 2024/3/4 15:32
# @Author : syq
# @Email : 1721169065@qq.com
# @Software: PyCharm
import hashlib
import pprint
import requests
from config.config import HOST
#1.md5加密方法
def get_md5(password):
#创建md5对象
md5=hashlib.md5()
#加密
md5.update(password.encode('utf-8'))
#返回加密结果
return md5.hexdigest()
#2.登录类
class Login:
#3.登录方法
def login(self,respData,getToken=False):
url=f'{HOST}/account/sLogin'
respData['password']=get_md5(respData['password'])
#4用requests库,获取响应结果
resReal=requests.post(url,data=respData)
#5.判断返回的结果
if getToken==False:
return resReal.json()
else:
return resReal.json()['data']
if __name__ == '__main__':
login=Login()
resReal=login.login({"username":"ct0909","password":"89254"})
pprint.pprint(resReal)
运行结果:
3.商铺
3.1商铺列表
新建shop.py模块 (lib-apiLib)
根据接口文档可知,请求消息头的token值要知道
(token值根据上一个登录接口获取)
shop.py代码
# -*- coding: utf-8 -*-
# @File : shop.py
# @Time : 2024/3/4 16:05
# @Author : syq
# @Email : 1721169065@qq.com
# @Software: PyCharm
#1.商铺类
import pprint
import requests
from lib.apiLib.login import Login
from config.config import HOST
class Shop:
#2.token值
def __init__(self,token):
self.headers={'Authorization':token}
#3.获取商铺列表的响应结果
def shop_list(self,respData):
url=f'{HOST}/shopping/myShop'
resReal=requests.get(url,params=respData,headers=self.headers)
return resReal.json()
if __name__ == '__main__':
#验证我的商铺接口代码是否没有问题
token=Login().login({"username":"ct0909","password":"89254"},getToken=True)
shop=Shop(token)
resReal=shop.shop_list({"page":1,"limit":1})
pprint.pprint(resReal)
结果
3.2文件上传
再shop.py模块中新增如下代码:
def file_update(self,fileName,fileDir,fileType):
url=f'{HOST}/file'
fileBody={'file':(fileName,open(fileDir,'rb'),fileType)}
resReal=requests.post(url,files=fileBody,headers=self.headers)
return resReal.json()['data']['realFileName']
fileBody={'file':(fileName,open(fileDir,'rb'),fileType)}
在这个字典中,'file'是键,后面的部分 ((fileName,open(fileDir,'rb'),
fileType)
) 是值,值又是由三部分组成的元组。
这三部分分别是:
fileName
:上传后的文件名。open(fileDir, 'rb')
:这部分是Python的内置函数open,它用于打开本地文件。'rb'模式代表以二进制格式打开一个文件用于只读。并且,文件会在被请求时读取,不会马上读取。这很重要,因为这意味着你可以上传超大的文件,不用担心内存使用过多。- fileType:代表文件类型;
'image/png'
:这是MIME类型(多用途互联网邮件拓展类型)。对于图像,可能的类型包括'image/jpeg', 'image/png'等。
3.3商铺更新
再shop.py模块中新增如下代码:
def shop_update(self,respData,shopId,image_path):
url=f'{HOST}/shopping/updatemyshop'
respData['id']=shopId
respData['image_path']=image_path
respData['image']=f'{HOST}/file/getImgStream?fileName={image_path}'
resReal=requests.post(url,data=respData,headers=self.headers)
return resReal.json()
新增后的shop.py模块的代码为
# -*- coding: utf-8 -*-
# @File : shop.py
# @Time : 2024/3/4 16:05
# @Author : syq
# @Email : 1721169065@qq.com
# @Software: PyCharm
#1.商铺类
import pprint
import requests
from lib.apiLib.login import Login
from config.config import HOST
class Shop:
#2.token值
def __init__(self,token):
self.headers={'Authorization':token}
#3.获取商铺列表的响应结果
def shop_list(self,respData):
url=f'{HOST}/shopping/myShop'
resReal=requests.get(url,params=respData,headers=self.headers)
return resReal.json()
#4.文件上传接口-目的为了给商铺更新接口传参
#文件上传接口包括:文件名字,文件对象,文件类型
def file_update(self,fileName,fileDir,fileType):
url=f'{HOST}/file'
fileBody={'file':(fileName,open(fileDir,'rb'),fileType)}
resReal=requests.post(url,files=fileBody,headers=self.headers)
return resReal.json()['data']['realFileName']
#5.获取商铺修改的响应结果
def shop_update(self,respData,shopId,image_path):
url=f'{HOST}/shopping/updatemyshop'
respData['id']=shopId
respData['image_path']=image_path
respData['image']=f'{HOST}/file/getImgStream?fileName={image_path}'
resReal=requests.post(url,data=respData,headers=self.headers)
return resReal.json()
if __name__ == '__main__':
#验证我的商铺接口代码是否没有问题
token=Login().login({"username":"ct0909","password":"89254"},getToken=True)
shop=Shop(token)
#验证商铺列表接口
# resReal=shop.shop_list({"page":1,"limit":1})
# pprint.pprint(resReal)
#验证文件上传接口
image_path=shop.file_update('温州修改.png','../../data/温州修改.png','image/png')
pprint.pprint(image_path)
#根据商铺列表接口获取商铺id
shopId=shop.shop_list({"page":1,"limit":1})['data']['records'][0]['id']
print(shopId)
respData={
"name": "星巴克新建店",
"address": "上海市静安区秣陵街道303号路",
"id": "3269",
"Phone": "13176876632",
"rating": "6.0",
"recent_order_num":100,
"category": "快餐便当/简餐",
"description": "满30减5,满60减8",
"image_path": "b8be9abc-a85f-4b5b-ab13-52f48538f96c.png",
"image": "http://121.41.14.39:8082/file/getImgStream?fileName=b8be9abc-a85f-4b5b-ab13-52f48538f96c.png"
}
#验证商铺更新接口
resReal=shop.shop_update(respData,shopId,image_path)
print(resReal)
结果: