搭建一个简单 web服务-flask框架
- 一、什么是wsgi?
- 二、搭建一个简单 web服务
- 三、扩展
- 四、请求加参数的情况
- 五、安装flask
一、什么是wsgi?
wsgi是webserver和application的传话筒,起桥梁通信的作用。
二、搭建一个简单 web服务
# coding:utf-8# 步骤:
# 搭建服务
# 监听动作 while循环,每隔几秒钟要去看看有没有请求发过来
# 处理程序
# 返回数据到套接字,生成一个响应对象
from wsgiref.simple_server import make_serverdef 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_serverdef 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_serverdef 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()
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
如有转载,请注明出处(如不注明,盗者必究)
四、请求加参数的情况
# coding:utf-8# 步骤:
# 搭建服务
# 监听动作 while循环,每隔几秒钟要去看看有没有请求发过来
# 处理程序
# 返回数据到套接字,生成一个响应对象
import json
from wsgiref.simple_server import make_serverdef index(request):return requestdef register(request):return requestdef 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欢迎关注这个超级无敌可爱的人鸭,有什么问题留言私信皆可,看见必回!
创作不易,如有转载,请注明出处