搭建一個簡單 web服務-flask框架
- 一、什么是wsgi?
- 二、搭建一個簡單 web服務
- 三、擴展
- 四、請求加引數的情況
- 五、安裝flask
一、什么是wsgi?
wsgi是webserver和application的傳話筒,起橋梁通信的作用,

二、搭建一個簡單 web服務
# coding:utf-8
# 步驟:
# 搭建服務
# 監聽動作 while回圈,每隔幾秒鐘要去看看有沒有請求發過來
# 處理程式
# 回傳資料到套接字,生成一個回應物件
from wsgiref.simple_server import make_server
def app(env, make_reponse):
# env 獲取相關資料——環境變數
# make_reponse(狀態碼:header)
make_reponse("200 ok", [('content-type', 'text/plain')])
return [b"hello,hanhanwang"] # b為byte型別
server = make_server("", 8000, app)
server.serve_forever()
運行情況:(下同!)

三、擴展
- 定義3個url,’/'首頁 ,‘register’注冊, '/login’登錄
- 對3個url 做對應的回應
- 例外處理:如果訪問不在指定的3個rul,報404錯誤,
# coding:utf-8
# 步驟:
# 搭建服務
# 監聽動作 while回圈,每隔幾秒鐘要去看看有沒有請求發過來
# 處理程式
# 回傳資料到套接字,生成一個回應物件
from wsgiref.simple_server import make_server
def index():
return "hello,I'm index!"
def register():
return "hello,please register!"
def login():
return "hello,please login!"
def app(env, start_resp):
# env 獲取相關資料——環境變數
# start_resp(狀態碼:header)
if env.get("PATH_INFO") == "/":
start_resp("200 ok", [('content-type', 'text/plain')])
soresponse = index()
return [soresponse.encode()]
elif env.get("PATH_INFO") == "/register":
start_resp("200 ok", [('content-type', 'text/plain')])
soresponse = register()
return [soresponse.encode()]
elif env.get("PATH_INFO") == "/login":
start_resp("200 ok", [('content-type', 'text/plain')])
soresponse = login()
return [soresponse.encode()]
else:
start_resp("404 not found", [('content-type', 'text/plain')])
return [b"sorry!page not found!"] # b為byte型別
server = make_server("", 8001, app)
server.serve_forever()
如果出現很多的條件分支都是==,那就用字典去封裝,(這樣的優勢:更靈活,修改添加起來很方便)
代碼簡化:
# coding:utf-8
# 步驟:
# 搭建服務
# 監聽動作 while回圈,每隔幾秒鐘要去看看有沒有請求發過來
# 處理程式
# 回傳資料到套接字,生成一個回應物件
from wsgiref.simple_server import make_server
def index():
return "hello,I'm index!"
def register():
return "hello,please register!"
def login():
return "hello,please login!"
# 這是一段路由 集中管理(有點像Django框架)
patterns = {
"/": index,
"/register": register,
"/login": login,
}
def app(env, start_resp):
# env 獲取相關資料——環境變數
# start_resp(狀態碼:header)
url = env.get("PATH_INFO")
if (url is None) or (url not in patterns.keys()):
start_resp("404 not found", [('content-type', 'text/plain')])
return [b"sorry!page not found!"] # b為byte型別
start_resp("200 ok", [('content-type', 'text/plain')])
respon = patterns.get(url)
if respon is None:
start_resp("404 not found", [('content-type', 'text/plain')])
return [b"sorry!page not found!"] # b為byte型別
return [respon().encode()]
server = make_server("", 8001, app)
server.serve_forever()
四、請求加引數的情況
# coding:utf-8
# 步驟:
# 搭建服務
# 監聽動作 while回圈,每隔幾秒鐘要去看看有沒有請求發過來
# 處理程式
# 回傳資料到套接字,生成一個回應物件
import json
from wsgiref.simple_server import make_server
def index(request):
return request
def register(request):
return request
def login(request):
return request
# 這是一段路由 集中管理(有點像Django框架)
patterns = {
"/": index,
"/register": register,
"/login": login,
}
def app(env, start_resp):
# app : flask核心物件
# env 獲取相關資料——環境變數
# start_resp(狀態碼:header)
url = env.get("PATH_INFO")
params = env.get("QUERY_STRING")
if (url is None) or (url not in patterns.keys()):
# start_resp("404 not found", [('content-type', 'text/plain')])
# return [b"sorry!page not found!"] # b為byte型別
# start_resp("404 not found", [('content-type', 'text/html')]) #如果想回傳html,就直接改成('content-type', 'text/html')
# return [b"<p style='color:green'>sorry!page not found!</p>"] # b為byte型別
start_resp("404 not found", [('content-type', 'application/json')])
result = json.dumps({"msg": "page is not found"})
return [result.encode()]
start_resp("200 ok", [('content-type', 'text/plain')])
respon = patterns.get(url)
if respon is None:
start_resp("404 not found", [('content-type', 'text/plain')])
return [b"sorry!page not found!"] # b為byte型別
return [respon(params).encode()]
server = make_server("", 8002, app)
server.serve_forever()
都說用了django(相比flask來說更具效率),都不會喜歡flask了,但老師說,我們學習flask就是為了采坑及對web框架有更深入的認識,當我們在django中遇到問題,處理起來也會比較容易一點,
五、安裝flask
pip install flask
如圖:

接下來就會詳細記錄flask框架實戰重點,后面繼續更博!
我還是個flask小白,如果大佬看到,希望可以提上您寶貴的建議,感激不盡!
https://blog.csdn.net/hanhanwanghaha歡迎關注這個超級無敵可愛的人鴨,有什么問題留言私信皆可,看見必回!
創作不易,如有轉載,請注明出處
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/258190.html
標籤:python
