肖sir___tonken讲解__post_python_jmeter
token案例:
案例:
网站:http://shop.duoceshi.com/login?redirect=%2Fdashboard
code接口:http://manage.duoceshi.com/auth/code
登录接口:http://manage.duoceshi.com/auth/login
登录接口参数:{"username":"admin","password":"e6WGOz+g/FuR646O7IF8JrlC6qH/anCI9/0UCsVDnUxN2aBdGKtRffNb1W7i87dRavZCNyP9yqvAcXLgdKtsRA==","code":"8888","uuid":"{{uuid}}"}
链接类型:Content-Type:application/json
搜索商品接口:http://manage.duoceshi.com/api/yxStoreCategory?page=0&size=10&sort=sort%2Cdesc
一、postman工具实现
第一个接口:
code接口:http://manage.duoceshi.com/auth/code
test中的语句:
//需要拿到uuid接口返回值里面的uuid作为下一个接口请求头里面的入参
// 1.通过JSON.parse函数把responseBody响应体进行格式化为json字符串
var jsonData = JSON.parse(responseBody);
// 2.通过json字符串里面的uuid这个键拿到对应的uuid值
postman.setEnvironmentVariable("uuid",jsonData.uuid);
第二个接口:
登录接口:http://manage.duoceshi.com/auth/login
body参数:
{"username":"admin","password":"e6WGOz+g/FuR646O7IF8JrlC6qH/anCI9/0UCsVDnUxN2aBdGKtRffNb1W7i87dRavZCNyP9yqvAcXLgdKtsRA==","code":"8888","uuid":"{{uuid}}"}
test语句:
//需要拿到登录接口返回值里面的token作为下个接口请求头里面的入参
// 1.通过JSON.parse函数把response响应体进行格式化为json字符串
var jsonData = JSON.parse(responseBody);
// 2.通过json字符串里面的token这个键拿到对应的token值设为环境变量
postman.setEnvironmentVariable("token", jsonData.token);
第三个接口:
搜索接口:
http://manage.duoceshi.com/api/yxStoreCategory?page=0&size=10&sort=sort%2Cdesc
==========================================================
python 获取tonken
import requests def uid(): url="http://manage.duoceshi.com/auth/code" h={"Content-Type":"application/json"} r=requests.get(url=url,headers=h) print(r.text) #返回参数 u=r.json()["uuid"] print(u) return r.json()['uuid'] #在返回参数中提取 def login(): url1="http://manage.duoceshi.com/auth/login" h1 = {"Content-Type": "application/json"} data1={"username":"admin", "password":"AL2HPFkHICFLSF7Nh0HBWqKf2XbZh9aBqM01ygQmQl61eLZVjxjXVp3/KtTwUzGiTHIhBXmdEExVzD4RoIYdhA==", "code":"8888", "uuid":uid() #引用上一个接口 } r1=requests.post(url=url1,json=data1,headers=h1) #备注data数据要json格式,才能查看到返回数据 print(r1.text) print(r1.json()) t=r1.json()["token"] print(t) return r1.json()['token'] #在返回体中提取token def bid(): url2="http://manage.duoceshi.com/api/menus/build" h2={"Authorization":login()} r2=requests.get(url=url2,headers=h2) print(r2.json()) if __name__ == '__main__': # uid() # login() bid()
第二种方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import re import requests class tonken(): def __init__( self ): pass def uid( self ): url = "http://manage.duoceshi.com/auth/code" h = { "Content-Type" : "application/json" } r = requests.get(url = url,headers = h) # print(r.text) #返回参数 wb = r.text s = re.findall( '"uuid":"(.+?)"' ,wb) print (s) dict1 = {} dict1[ 'uuid' ] = s[ 0 ] for i,j in dict1.items(): print (j) return j def login( self ): c = self .uid() url1 = "http://manage.duoceshi.com/auth/login" h1 = { "Content-Type" : "application/json" } data1 = { "username" : "admin" , "password" : "AL2HPFkHICFLSF7Nh0HBWqKf2XbZh9aBqM01ygQmQl61eLZVjxjXVp3/KtTwUzGiTHIhBXmdEExVzD4RoIYdhA==" , "code" : "8888" , "uuid" :c #引用上一个接口 } r1 = requests.post(url = url1,json = data1,headers = h1) #备注data数据要json格式,才能查看到返回数据 print (r1.text) wb1 = r1.text s = re.findall( '"token":"(.+?)"' , wb1) print (s) dict2 = {} dict2[ 'uuid' ] = s[ 0 ] for i, j in dict2.items(): print (j) return j def build( self ): url2 = "http://manage.duoceshi.com/api/menus/build" h2 = { "Authorization" : self .login()} r2 = requests.get(url = url2,headers = h2) print (r2.json()) if __name__ = = '__main__' : dx = tonken() # dx.uid() # dx.login() dx.build() |
第三种方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | import re import requests class tonken(): def __init__( self ): pass def uid( self ): url = "http://manage.duoceshi.com/auth/code" h = { "Content-Type" : "application/json" } r = requests.get(url = url,headers = h) # print(r.text) #返回参数 wb = r.text s = re.findall( '"uuid":"(.+?)"' ,wb) print (s) m = " " .join(s) print (m) #code-keyd6f4494345ba49679d80592465f13305 return m def login( self ): c = self .uid() url1 = "http://manage.duoceshi.com/auth/login" h1 = { "Content-Type" : "application/json" } data1 = { "username" : "admin" , "password" : "AL2HPFkHICFLSF7Nh0HBWqKf2XbZh9aBqM01ygQmQl61eLZVjxjXVp3/KtTwUzGiTHIhBXmdEExVzD4RoIYdhA==" , "code" : "8888" , "uuid" : self .uid() #引用上一个接口 } r1 = requests.post(url = url1,json = data1,headers = h1) #备注data数据要json格式,才能查看到返回数据 print (r1.text) wb1 = r1.text s = re.findall( '"token":"(.+?)"' , wb1) print (s) n = ''.join(s) print (n) def build( self ): url2 = "http://manage.duoceshi.com/api/menus/build" h2 = { "Authorization" : self .login()} r2 = requests.get(url = url2,headers = h2) print (r2.json()) if __name__ = = '__main__' : dx = tonken() # dx.uid() # dx.login() dx.build() |
==========================================================
jmeter中tonken
第一个接口:GET http://manage.duoceshi.com/auth/code
第二个接口:POST http://manage.duoceshi.com/auth/login
{"username":"admin","password":"ogqJt/paTDJCulj4u06yrGhkwH7XwiNe0Ce6ToKxUaPRjASkd+RHIp8knCihuLpsL5I+5p7NCp7mClZ04U9vog==","code":"8888","uuid":"code-key1867ef6878954530a3b5ce2a3b8ead00"}
第三个接口:GET http://manage.duoceshi.com/api/menus/build
第一种方法步骤:
第一个接口:GET http://manage.duoceshi.com/auth/code

提取:
第二个接口:POST http://manage.duoceshi.com/auth/login
用户参数:
{"username":"admin","password":"ogqJt/paTDJCulj4u06yrGhkwH7XwiNe0Ce6ToKxUaPRjASkd+RHIp8knCihuLpsL5I+5p7NCp7mClZ04U9vog==","code":"8888","uuid":"code-key1867ef6878954530a3b5ce2a3b8ead00"}

token值提取:

第三个接口:
GET http://manage.duoceshi.com/api/menus/build
第二种方法:
通过JSON Extractor 方法
第一个接口:GET http://manage.duoceshi.com/auth/code
在设置uiid变量
第二个接口:
POST http://manage.duoceshi.com/auth/login
POST data:
{"username":"admin","password":"ogqJt/paTDJCulj4u06yrGhkwH7XwiNe0Ce6ToKxUaPRjASkd+RHIp8knCihuLpsL5I+5p7NCp7mClZ04U9vog==","code":"8888","uuid":"code-keyc156c7a4911e464790e2998ce068240f"}
设置提取方法
请求头中设置了变量
第三个接口:
GET http://manage.duoceshi.com/api/menus/build
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!