軟件測(cè)試 | 后端web開(kāi)發(fā)框架
后端 web 開(kāi)發(fā)框架的技術(shù)如下:
頁(yè)面渲染:客戶(hù)端渲染頁(yè)面(SPA)、服務(wù)端渲染頁(yè)面(模板技術(shù))
數(shù)據(jù)庫(kù)連接技術(shù):數(shù)據(jù)庫(kù)連接池、數(shù)據(jù)訪(fǎng)問(wèn)
服務(wù)管理:接口、路由、權(quán)限
異步任務(wù)調(diào)度:異步、同步、回調(diào)
最早服務(wù)端會(huì)對(duì)頁(yè)面進(jìn)行渲染,隨著發(fā)展,前端渲染與服務(wù)端分離開(kāi),前端和后端通過(guò)接口進(jìn)行對(duì)接。 目錄后端框架分為二大類(lèi):
迷你型框架
Python:Flask
Java:Spark Java
大而全的框架:集成 web 開(kāi)發(fā)所有功能
Python:Django
Java:Spring 全家桶
但是用 Django 開(kāi)發(fā)比較少,之前只有中國(guó)互聯(lián)網(wǎng)的知乎和豆瓣,小項(xiàng)目開(kāi)發(fā)使用 Flask 即可。
Flask
Flask 是一個(gè)使用 Python 編寫(xiě)的輕量級(jí) Web 應(yīng)用程序框架。
官網(wǎng):https://flask.palletsprojects.com/en/2.0.x/
安裝
使用 pip 進(jìn)行安裝
pip install Flask
簡(jiǎn)單使用
安裝好后,輸入以下代碼開(kāi)啟flask服務(wù):
from flask import Flask
# 指定 Flask 名字為文件名
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>”
可以在命令行運(yùn)行代碼,下面命令的 hello 是文件名:
Windows 使用 CMD 運(yùn)行:
> set FLASK_APP=hello
> flask run
* Running on http://127.0.0.1:5000/
MAC 或 Linux 使用 BASH 運(yùn)行:
$ export FLASK_APP=hello
$ flask run
* Running on http://127.0.0.1:5000/
使用 Get 請(qǐng)求訪(fǎng)問(wèn)?http://127.0.0.1:5000/?,可獲得響應(yīng):
Hello,World!
對(duì)/login路徑返回指定請(qǐng)求:
from flask import Flask, request
app = Flask(__name__)
# methods 代表只監(jiān)聽(tīng) get 和 post 請(qǐng)求
@app.route("/login", methods=['post', 'get'])
def login():
res = {
"methods": request.method, # 請(qǐng)求方法
"path": request.path, # 請(qǐng)求路徑
"args": request.args, # 請(qǐng)求參數(shù)
"form": request.form # 表單
}
return res
使用 Get 請(qǐng)求訪(fǎng)問(wèn)?http://127.0.0.1:5000/login?a=1&b=2?時(shí):
{
"args": {
"a": "1",
"b": "2"
},
"form": {},
"methods": "GET",
"path": "/login"
}
使用 curl 命令發(fā)送 post 請(qǐng)求:
curl -X POST [http://127.0.0.1:5000/login](http://127.0.0.1:5000/login) -d "a=2"
{"args":{},"form":{"a":"2"},"methods":"POST","path":"/login"}
Session
Session 是基于 Cookie 實(shí)現(xiàn), 保存在服務(wù)端的鍵值對(duì),在瀏覽器的 Cookie 中也對(duì)應(yīng)相同的隨機(jī)字符 串,用來(lái)再次請(qǐng)求的時(shí)候驗(yàn)證:
Flask 的 Session 是通過(guò)加密之后放到了 Cookie 中,所以下面代碼需要設(shè)置密鑰。
from flask import Flask, request, session
app = Flask(__name__)
# 配置密鑰
app.secret_key = "hello"
# methods 代表只監(jiān)聽(tīng) get 和 post 請(qǐng)求
@app.route("/login", methods=['post', 'get'])
def login():
# 使用 session 將請(qǐng)求的 name 參數(shù)存到 session
session["name"] = request.args.get("name")
return {"msg": "OK"}
在發(fā)起請(qǐng)求的瀏覽器可以看到 Cookies :
