Python一:接口基本请求

1、标签添加,查询,删除

# coding=utf-8
import requests
import json

#定义一个登录的请求地址
Login_url="http://testadminapi.ihlaifu.cn/Base_Manage/Home/SubmitLogin"

#定义一个添加标签的请求地址
add_url="http://testadminapi.ihlaifu.cn/api/Tag/AddOrUpdateTag"
#获取标签
get_url = "http://testadminapi.ihlaifu.cn/api/Tag/GetTag"
#删除标签
delete_url = "http://testadminapi.ihlaifu.cn/api/Tag/DeleteTag"
#添加标签的请求数据
add_data=json.dumps({"tagID":"","tagContent":"KTV"})
#获取标签的请求数据
get_data=json.dumps({"pageIndex":1,"pageSize":10,"keyword":""})

#登录的请求体数据
login_data={"userName":"chengxin","password":"21D6831F06AB01CCE9BE8F67792BDEFE5CA4E45A","savePwd":True}
#定义一个变量接收登录返回的响应数据
login_response=requests.post(url=Login_url,json=login_data)
#打印出响应数据中的Data字段
print(json.loads(login_response.text)['Data'])
#定义一个名为Token的变量去接收提取出来的Data字段
Token=json.loads(login_response.text)['Data']

#请求头数据
headers = {
  'Content-Type': 'application/json;charset=UTF-8',
  'Token': Token  #将接收Data字段的变量作为请求体的值

}
#定义一个变量接收请求后响应的数据
# add_response = requests.post( url=add_url, headers=headers, data=add_data)
#输出响应数据
# print(add_response.text)

#定义一个变量接收获取请求接口返回的数据
get_response=requests.post(url=get_url,headers=headers,data=get_data)
#获取响应数据中的TagId值
print(json.loads(get_response.text)['Data']['List'][00]['TagId'])
#定义一个变量接收提取出来的TagId值
TagId=json.loads(get_response.text)['Data']['List'][00]['TagId']
#将变量作为请求体去请求删除接口
delete_data=json.dumps([TagId])
delete_response=requests.post(url=delete_url,headers=headers,data=delete_data)
print(delete_response.text)

2、发送get请求

# 导包 
import requests 

# 发送请求
 response = requests.get("http://www.baidu.com") 

# 查看响应 
# 查看响应数据编码格式

print("原始的数据编码为:", response.encoding) 
print("设置前响应数据:", response.text)

# 设置响应数据编码格式
response.encoding = "utf-8"
print("设置编码后数据编码为:", response.encoding) 
print("设置后响应数据:", response.text)

解决响应数据乱码问题
获取当前编码格式: 响应.encoding
设置新的编码规范: 响应.encoding="utf-8"

# 查看响应 
# 查看响应数据编码格式 
print("原始的数据编码为:", response.encoding) 
print("设置前响应数据:", response.text) 

# 设置响应数据编码格式 response.encoding = "utf-8" 
print("设置编码后数据编码为:", response.encoding) 
print("设置后响应数据:", response.text)

3、发送post请求

response = requests.post(url, data=None, json=None) 
""" 
:param url: 请求的URL 
:param data: (可选) 要发送到请求体中的字典、元组、字节或文件对象 
:param json: (可选) 要发送到请求体中的JSON数据 """

说明:

  • data: 参数接收form表单数据,后台会⾃动附加form表单请求信息头(data数据格式为字典)
  • json:参数接收json数据,后台会⾃动附加json表单请求信息头
    • headers = {"Content-Type":"application/json"}

3.1提交form表单

需求: 
1. 请求TPshop项目的登录接口,请求数据(username: 13088888888, password: 123456, verify_code: 1234) 
2. 登录接口URL:http://localhost/index.php?m=Home&c=User&a=do_login

# 导包 
import requests 
# 发请求 
login_url = "http://localhost/index.php?m=Home&c=User&a=do_login" 
login_data = { 
    "username": "13488888888", 
    "password": "123456", 
    "verify_code": "8888"
 }
response = requests.post(url=login_url, data=login_data) 
# 看响应 
print(response.json())

3.2提交json数据

需求:
1. 请求IHRM项目的登录接口,请求数据( {"mobile":"13800000002","password":"123456"})
2. 登录接口URL:http://ihrm-test.itheima.net/api/sys/login

1. 请求IHRM项目的登录接口,请求数据( {"mobile":"13800000002", "password":"123456"} )
2. 登录接口URL:http://ihrm-test.itheima.net/api/sys/login """ 

# 导包 
import requests 
# 发送请求 
login_url = "http://ihrm-test.itheima.net/api/sys/login" 
login_data = { 
    "mobile": "13800000002",
    "password": "123456"
 }
response = requests.post(url=login_url, json=login_data) 
# 查看响应 
print(response.json())

4、传递URL参数

需求: 
1. 访问TPshop搜索商品的接口,通过查询字符串的方式传递搜索的关键字 iPhone ,并查看响应数据 
2. 请求路径格式为: http://localhost/Home/Goods/search.html?q=iPhone
# 导包 
import requests 

# 发送请求 
# 直接通过url传递参数 
response = requests.get(" http://localhost/Home/Goods/search.html?q=iphone") 
# 通过params传递参数: 
# (1)字符串 
urlA = "http://localhost/Home/Goods/search.html" 
stringA = "q=iphone" 
response = requests.get(url=urlA, params=stringA) 
# (2)字典
 dictA = {
 "q": "iphone"
 }
response = requests.get(url=urlA, params=dictA) 
# 查看响应 
print(response.text)

5、响应内容解析

  • 用途:断言
  • 实现:
    • response.status_code :响应状态码
    • response.url :url地址信息
    • response.encoding :查看响应数据编码格式
    • response.headers :查看头部信息
    • response.cookies : 查看cookies信息
    • response.text :文本形式查看响应数据
    • response.content :字节码形式查看响应数据
    • response.json() json形式查看响应数据

案例1:

1 ) . 访问百度首页的接口 ` http : // www . baidu . com ` ,获取以下响应数据
2 ) . 获取响应状态码
3 ) . 获取请求 URL
4 ) . 获取响应字符编码
5 ) . 获取响应头数据
6 ) . 获取响应的 cookie 数据
7 ) . 获取文本形式的响应内容
8 ) . 获取字节形式的响应内容
import requests 


# 1). 访问百度首页的接口`http://www.baidu.com`,获取以下响应数据 
response = requests.get("http://www.baidu.com") 

# 2). 获取响应状态码 
print("响应状态码:", response.status_code) 

# 3). 获取请求URL 
print("URL:", response.url) 

# 4). 获取响应字符编码 
print("编码格式为:", response.encoding) 

# 5). 获取响应头数据 
print("响应头信息:", response.headers) 
print("Content-Type:", response.headers.get("Content-Type")) 

# 6). 获取响应的cookie数据 
print("cookies:", response.cookies) 
print("提取指定的cookie:", response.cookies.get("BDORZ")) 

# 7). 获取文本形式的响应内容 
print("文本形式显示响应内容:", response.text)

 # 8). 获取字节形式的响应内容 
print("获取字节形式的响应内容:", response.content)
print("获取字节形式的响应内容:", response.content.decode("utf-8"))
案例 2
1 ) . 访问查询天气信息的接口,并获取 JSON 响应数据
2 ) . 接口地址: http : // www . weather . com . cn / data / sk / 101010100. html
1. 请求 IHRM 项目的登录接口,请求数据(
{ "mobile" : "13800000002" ,
"password" : "123456" }
2. 登录接口 URL http : //ihrm-test.itheima.net/api/sys/login
# import requests 
#
# # 1). 访问查询天气信息的接口,并获取JSON响应数据 
# # 2). 接口地址:http://www.weather.com.cn/data/sk/101010100.html 
# response = 
requests.get("http://www.weather.com.cn/data/sk/101010100.html")
#print(response.json())

1. 请求IHRM项目的登录接口,请求数据( {"mobile":"13800000002", "password":"123456"} ) 2. 登录接口URL:http://ihrm-test.itheima.net/api/sys/login """ 

# 导包
import requests 

# 发送请求 
login_url = "http://ihrm-test.itheima.net/api/sys/login" 
login_data = { 
    "mobile": "13800000002",
    "password": "123456" 
}

response = requests.post(url=login_url, json=login_data) 
# 查看响应 
print(response.json())

6、设置请求头

  • 使用方法: headers={"Content-Type":"application/json"}
  • 案例:
1. 请求 IHRM 项目的登录接口, URL http : //ihrm-test.itheima.net/api/sys/login
2. 请求头: Content - Type : application / json
3. 请求体: { "mobile" : "13800000002" , "password" : "123456" }
import requests 

login_url = "http://ihrm-test.itheima.net/api/sys/login" 
login_header = { "Content-Type": "application/json" }
login_data ={
     "mobile": "13800000002",
     "password": "123456"
 }

# 发送请求
response = requests.post(url=login_url, json=login_data, headers=login_header) 

# 查看响应 
print(response.json())

7、设置cookie

  • 案例:解决tpshop登录验证码问题
1. 使用 requests 库调用 TPshop 登录功能的相关接口,完成登录操作
2. 登录成功后获取 我的订单 页面的数据
接口地址:
获取验证码: http : //localhost/index.php?m=Home&c=User&a=verify
登录用户:( username : 13088888888 , password : 123456 , verify_code : 1234
登录: http : //localhost/index.php?m=Home&c=User&a=do_login
我的订单: http : //localhost/Home/Order/order_list.html
import requests 
# 获取验证码 
response = requests.get("http://localhost/index.php?m=Home&c=User&a=verify")     
print(response.cookies) 
PHPSESSID = response.cookies.get("PHPSESSID")
 print(PHPSESSID) 

# 登录 
login_url = "http://localhost/index.php?m=Home&c=User&a=do_login" 
login_data = {
    "username": "13488888888", 
    "password": "123456",
    "verify_code": "8888" 
}
cookies = {
 "PHPSESSID": PHPSESSID 
}
response = requests.post(url=login_url, data=login_data, cookies=cookies) print(response.json())

# 我的订单:http://localhost/Home/Order/order_list.html response = requests.get("http://localhost/Home/Order/order_list.html", 
cookies=cookies) 
print(response.text)

 8、设置session

  • 作用:在多个请求之间存储数据并自动添加数据,如cookies
  • 使用:
    • 实例化: session = requests.Session()
    • 发送请求:
      • request.get() ==> session.get()
      • ...
  • 案例:
1. 使用 requests 库调用 TPshop 登录功能的相关接口,完成登录操作
2. 登录成功后获取 我的订单 页面的数据
接口地址:
获取验证码: http : //localhost/index.php?m=Home&c=User&a=verify
登录用户:( username : 13088888888 , password : 123456 , verify_code : 1234
登录: http : //localhost/index.php?m=Home&c=User&a=do_login
我的订单: http : //localhost/Home/Order/order_list.html
import requests
# 创建session对象 
session = requests.Session() 

# 获取验证码
response = session.get("http://localhost/index.php?m=Home&c=User&a=verify")

# 登录 
login_url = "http://localhost/index.php?m=Home&c=User&a=do_login" 
login_data = { 
    "username": "13488888888",
    "password": "123456", 
    "verify_code": "8888" 
}

response = session.post(url=login_url, data=login_data) 
print(response.json())
 
# 我的订单:http://localhost/Home/Order/order_list.html 
response = session.get("http://localhost/Home/Order/order_list.html") 
print(response.text)

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值