1 預(yù)備知識
1.2 具有一個提供請求的服務(wù)器
- 可用
python
的Django
框架自己搭建(為防止篇幅太長仗岖,參見上一篇【python】Django 2.2 搭建注冊樊拓、登錄服務(wù)器合住,帶管理員查看權(quán)限驗(yàn)證宅粥。)
1.1 python json轉(zhuǎn)對象
想獲取更多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 創(chuàng)建文件感耙、導(dǎo)入庫
- 新建隨便找個地方喉脖,
HTTP_login.py
(名字隨意,*.py
的文件類型就好)
加入代碼:
# HTTP_login.py
import requests
import json
2.2 發(fā)起請求抑月,打印內(nèi)容
#往文件后面增加代碼
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)
運(yùn)行树叽、輸出:
{"msg":"login success","user_id":7,"status":200,"token":"6f815a78c6c742558cef3be088089322"}
200
2.3 轉(zhuǎn)化為對象、查看數(shù)據(jù)類型
#往文件后面增加代碼
res=r.text
print(type(res))
print(res)
res=json.loads(res)
print(type(res))
print(res)
運(yùn)行谦絮、輸出:
{"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請求:獲取個人數(shù)據(jù):
3.1 將獲取到的token
加入請求頭
#往文件后面增加代碼题诵,為了直觀,已將前面的 print行注釋掉
headers = {'Authorization':res['token']} #轉(zhuǎn)化為對象的好處之一层皱,取數(shù)據(jù)方便
r = requests.get("http://127.0.0.1:8000/bike/appserver/users/7/", headers=headers)
print(r.request.headers)
print(r.text)
運(yùn)行性锭、輸出:
{'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 請求:更新個人信息
- 題外話:暴露網(wǎng)絡(luò)安全問題、
u_admin
字段也能被更新叫胖,獲得了超級權(quán)限
#往文件后面增加代碼草冈,為了直觀,已將前面的 print行注釋掉
headers = {'Authorization':res['token']} #轉(zhuǎn)化為對象的好處之一瓮增,取數(shù)據(jù)方便
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)
運(yùn)行怎棱、輸出:
{"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請求:考慮操作性
- 可自己在服務(wù)器增加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)
運(yùn)行砸捏、輸出:
{"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":"手機(jī)號","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 代碼優(yōu)化谬运,集注冊、登錄垦藏、查看一起
方案一:寫個
WEB
頁面方案二:使用
pyqt
寫個客戶端頁面方案三:將前面代碼封裝成類梆暖,帶提示調(diào)用
方案四:POSTMAN等測試軟件
方案五:用QT編寫界面
方案六:用Java寫
…………