测试开发——搭建一个简单 web服务(flask框架基础)项目实战

搭建一个简单 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()

运行情况:(下同!)
在这里插入图片描述

三、扩展

  1. 定义3个url,’/'首页 ,‘register’注册, '/login’登录
  2. 对3个url 做对应的响应
  3. 异常处理:如果访问不在指定的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欢迎关注这个超级无敌可爱的人鸭,有什么问题留言私信皆可,看见必回!
创作不易,如有转载,请注明出处

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高效阅读论文

写论文做研究的时候少不了要看论文&#xff0c;但是很多时候看过同类的论文之后发觉什么也没记住&#xff0c;本文将有三位牛人想大家分享他们在阅读论文的一些技巧&#xff0c;希望对大家有用。科研牛人一&#xff1a; 从Ph.D到现在工作半年,发了12 篇paper, 7 篇first author…

【文章】七不出,八不归,原来是这个意思

春节临近&#xff0c;出行的人们越来越多。有句老话儿叫“七不出&#xff0c;八不归”也开始被大家提及起来&#xff01;那么&#xff0c;究竟什么是“七不出&#xff0c;八不归”&#xff1f;这句话到底有没有道理呢&#xff1f; 老话说“七不出&#xff0c;八不归”&#xff…

❤️ 跟我一起用python追到女朋友!❤️

时间过得真快&#xff0c;昨年520写了一个表白代码 点击此处 哈哈哈 &#xff0c;现在看来还蛮好看的&#xff01;哈哈哈&#xff0c;我专业帮人追女朋友&#xff0c;心想两玩得超好的同学&#xff0c;都是我帮忙追的哈哈哈&#xff0c;要是有粉丝需要我帮忙出谋划策&#xff0…

VGG网络结构(一)

刚开始接触深度学习、卷积神经网络的时候非常懵逼&#xff0c;不知道从何入手&#xff0c;我觉得应该有一个进阶的过程&#xff0c;也就是说&#xff0c;理应有一些基本概念作为奠基石&#xff0c;让你有底气去完全理解一个庞大的卷积神经网络&#xff1a;本文思路&#xff1a;…

测试开发——flask快速入门小基础

这几天看群里面的大佬基本上个个被逼相亲&#xff0c;可爱小娟娟还一天相四次&#xff08;简直了&#xff09;&#xff0c;我们程序员也是很帅的很美的&#xff0c;其实我们的头发也挺多的哈哈哈哈&#xff08;至少我身边的程序员挺多头发的&#xff0c;当然我linux老师头发有点…

【文章】鱼那么信任水, 水却煮了鱼!

鱼那么信任水&#xff0c; 水却煮了鱼。 叶子那么信任风&#xff0c; 风却吹落了叶。 人心的冷暖&#xff0c; 总是一直变幻。 熟悉的陌生了&#xff0c; 陌生的走远了。 人与人之间&#xff0c; 全靠一颗心&#xff0c; 情与情之间&#xff0c; 全凭一寸真。 落叶知秋…

VGG网络结构(二)

深度学习论文随记&#xff08;二&#xff09;---VGGNet模型解读 Very Deep Convolutional Networks forLarge-Scale Image Recognition Author: K Simonyan &#xff0c; A Zisserman Year: 2014 1、 导引 VGGNet是2014年ILSVRC竞赛的第二名&#xff0c;没错你没听错它是第…

情人节用python写个贪吃蛇安慰自己

这几天除了吃就是睡&#xff08;不知道为啥&#xff0c;吃饱就想睡&#xff09;&#xff0c;从大年三十到现在感觉啥都没做&#xff0c;写个代码安慰安慰自己吧哈哈哈哈。给大家分享几部最近看的电影&#xff08;要学英语的一定要get起来&#xff09;——《彩虹照耀》《罗宾逊漂…

【测试】用例设计思路-输入框类型功能

在我们的测试中&#xff0c;设计测试用例的质量&#xff0c;不仅与需求说明书有关&#xff0c;而且与测试人员的测试能力有关&#xff0c;今天我们通过一个典型的案例&#xff0c;总结一下对于输入框类型的功能&#xff0c;如何设计测试用例。 如图所示&#xff1a;我们需要测…

RuntimeError: Working outside of request context. This typically means that you attempted to use fun

菜吃多了醉了一、报错情况二、解决办法一、报错情况 我在写装饰器的时候运行报错&#xff1a; RuntimeError: Working outside of request context.This typically means that you attempted to use functionality that needed an active HTTP request. Consult the documen…

测试开发——flask视图函数与路由 实战重点

开头必须分享一个我的志玲姐姐&#xff0c;太可了&#xff01;点击此处 flask视图函数与路由的关系一、视图函数与路由 实战重点1.1 一个视图函数可以绑定多个URL地址1.2 视图装饰器应该放到最外层1.3所实现的装饰器要返回视图函数的返回值二、动态路由1. 用url匹配2. 通过传参…

SyntaxError: Non-UTF-8 code starting with ‘\xe2‘ 今天是小白上线的一天

打代码的时候第一行的utf-8注释居然空了个格 # coding utf-8估计是甜甜的恋爱想傻了&#xff0c;我居然还去查自己错哪里了&#xff0c;还说我的编码是对的鸭 正确输入&#xff1a; # codingutf-8

【Python爬虫】Python3+selenium环境配置

在我们爬虫爬网过程中&#xff0c;我们需要用到Python3selenium&#xff0c;Selenium是一个自动化测试工具&#xff0c;利用它我们可以驱动浏览器执行特定的动作&#xff0c;如点击、下拉等操作。对于一些JavaScript渲染的页面来说&#xff0c;这种抓取方式非常有效。 文章参考…

numpy 数组与矩阵的乘法理解

1. 当为array的时候&#xff0c;默认d*f就是对应元素的乘积&#xff0c;multiply也是对应元素的乘积&#xff0c;dot&#xff08;d,f&#xff09;会转化为矩阵的乘积&#xff0c; dot点乘意味着相加&#xff0c;而multiply只是对应元素相乘&#xff0c;不相加 2. 当为mat的时候…

(AU/PS)Adobe Audition CC.exe -系统错误 由于找不到MSVCP120.dll,无法继续执行代码。重新安装程序可能会解决此问题。

bug简直难过报错情况&#xff1a;由于找不到MSVCP120.dll&#xff0c;无法继续执行代码。重新安装程序可能会解决此问题。最终解决办法心得体会https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这…

【数据库】Window环境安装MySQL Server 5.7.21

正常我们在mysql官网下载安装的MySQL比较大&#xff0c;因为它集成了好多东西&#xff0c;尽管方便&#xff0c;但是东西比较多&#xff0c;有些我们可能不想要&#xff0c;这时我们可以直接下载单个MySQL Server安装&#xff0c;所以这篇文章主要介绍的就是在window环境下安装…

产品经理:论项目计划有多重要?——软件项目管理

凡事预则立&#xff0c;不预则废前言一、论安迪特质与项目经理的共通性二、个人感想三、我的产品经理实习笔试前言 昨天杨老师上了一让我记忆很深刻的课&#xff0c;就是项目计划的重要性&#xff0c;以《肖申克的救赎 》为例: 《肖申克的救赎 》的背景是20世纪30年代&#xff…

Android开发环境配置介绍

在我们进行AppiumAndroid进行自动化测试时&#xff0c;我们需要安装android_sdk环境&#xff0c;安装过程发现Android SDK&#xff0c;Android studio&#xff0c;AVD Manager&#xff0c;SDK Manager等名词&#xff0c;本篇文章主要介绍的就是Android开发环境的搭建&#xff0…

python——百钱买百鸡:一只公鸡5块钱,一只母鸡3块钱,三只小鸡1块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?

学习《python程序设计教程》的时候&#xff0c;遇到了这个问题&#xff0c;觉得还蛮好玩的&#xff1a; 百钱买百鸡&#xff1a;一只公鸡5块钱&#xff0c;一只母鸡3块钱&#xff0c;三只小鸡1块钱&#xff0c;现在要用一百块钱买一百只鸡&#xff0c;问公鸡、母鸡、小鸡各多少…

以知乎为例子来说明MVC是个啥

记得当时了解Web开发的MVC&#xff08;Model-View-Controller&#xff09;模式后&#xff0c;有一种心血喷涌的感觉&#xff0c;觉得太有意思了&#xff08;程序员别喷&#xff0c;我就是这么没见过世面&#xff09;。我们以知乎为例子来说明MVC是个啥&#xff1a;每个人的主页…