【python】使用requests进行 HTTP的请求

1 预备知识

1.2 具有一个提供请求的服务器

1.1 python json转对象

想获取更多json知识,随便百度一篇吧:https://www.cnblogs.com/qttblog/p/8615205.html

  • 需要安装库: json
    • 安装方法:自行百度

1.2 requests库的使用

想获取更多requests知识,随便百度一篇吧:https://www.cnblogs.com/lanyinhao/p/9634742.html

  • 需要安装库: requests
    • 安装方法:自行百度

2 POST 请求:登录

2.1 创建文件、导入库

  • 新建随便找个地方,HTTP_login.py(名字随意,*.py的文件类型就好)
    加入代码:
# HTTP_login.py
import requests
import json

2.2 发起请求,打印内容

#往文件后面增加代码
datas = {"u_phone": "12345678902", "u_password": "666666"}
r = requests.post("http://127.0.0.1:8000/bike/appserver/users/?action=login", data=datas)
print(r.text)
print(r.status_code)
  • 运行、输出:
{"msg":"login success","user_id":7,"status":200,"token":"6f815a78c6c742558cef3be088089322"}
200

2.3 转化为对象、查看数据类型

#往文件后面增加代码
res=r.text
print(type(res))
print(res)
res=json.loads(res)
print(type(res))
print(res)
  • 运行、输出:
{"msg":"login success","user_id":7,"status":200,"token":"081e5e8b5c65472592827567a5ec3045"}
200
<class 'str'>
{"msg":"login success","user_id":7,"status":200,"token":"081e5e8b5c65472592827567a5ec3045"}
<class 'dict'>
{'msg': 'login success', 'user_id': 7, 'status': 200, 'token': '081e5e8b5c65472592827567a5ec3045'}

3 GET请求:获取个人数据:

3.1 将获取到的token加入请求头

#往文件后面增加代码,为了直观,已将前面的 print行注释掉
headers = {'Authorization':res['token']} #转化为对象的好处之一,取数据方便
r = requests.get("http://127.0.0.1:8000/bike/appserver/users/7/", headers=headers)
print(r.request.headers)
print(r.text)
  • 运行、输出:
 {'User-Agent': 'python-requests/2.25.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': '182cc0e0d0954de58a0a5337cd070694'}
{"url":"http://127.0.0.1:8000/bike/appserver/users/7/","id":7,"u_name":"","u_phone":"12345678909","u_password":"666666","u_admin":false}

4 PATCH 请求:更新个人信息

  • 题外话:暴露网络安全问题、u_admin字段也能被更新,获得了超级权限
#往文件后面增加代码,为了直观,已将前面的 print行注释掉
headers = {'Authorization':res['token']} #转化为对象的好处之一,取数据方便
datas = {"u_name":"怿窗","u_phone": "12345678909", "u_password": "666666"}
r = requests.patch("http://127.0.0.1:8000/bike/appserver/users/7/",  data=datas,headers=headers)
print(r.text)
  • 运行、输出:
 {"url":"http://127.0.0.1:8000/bike/appserver/users/7/","id":7,"u_name":"怿窗","u_phone":"12345678909","u_password":"666666","u_admin":false}

4 put 、delete请求:考虑操作性

  • 可自己在服务器增加API URL测试(直接继承REST framework封装好的,很方便)

5 options请求:几乎所有URL都可用

#往文件后面增加代码,为了直观,已将前面的 print行注释掉
r =requests.options("http://127.0.0.1:8000/bike/appserver/users/7/",  data=datas,headers=headers)
print(r.text)
  • 运行、输出:
{"name":"User Api","description":"","renders":["application/json","text/html"],"parses":["application/json","application/x-www-form-urlencoded","multipart/form-data"],"actions":{"PUT":{"url":{"type":"field","required":false,"read_only":true,"label":"Url"},"id":{"type":"integer","required":false,"read_only":true,"label":"ID"},"u_name":{"type":"string","required":false,"read_only":false,"label":"姓名","max_length":12},"u_phone":{"type":"string","required":true,"read_only":false,"label":"手机号","max_length":12},"u_password":{"type":"string","required":true,"read_only":false,"label":"密码","max_length":78},"u_admin":{"type":"boolean","required":false,"read_only":false,"label":"是否管理员"}}}}

6 代码优化,集注册、登录、查看一起

  • 方案一:写个WEB页面
  • 方案二:使用pyqt写个客户端页面
  • 方案三:将前面代码封装成类,带提示调用
  • 方案四:POSTMAN等测试软件
  • 方案五:用QT编写界面
  • 方案六:用Java写
  • …………
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值