当前位置: 首页 > news >正文

flask web学习之flask与http(二)

文章目录

      • 1. HTTP响应
        • 1.1 响应报文
        • 1.2 常见HTTP状态码
        • 1.3 在flask中如何生成响应
          • 1.3.1重定向
          • 1.3.2错误响应
        • 1.4响应格式

在flask程序中,客户端发出的请求触发相应的视图函数,获取返回值会作为响应的主体,最后生成完整的响应,即响应报文。

1. HTTP响应

1.1 响应报文

响应报文主要由协议版本、状态码、原因短语、响应首部和响应主体组成。

  • 协议版本:响应报文的开头通常包含协议版本信息,用于标识使用的通信协议的版本。如HTTP/1.1。
  • 状态码:状态码是一个三位数字的代码,用于表示请求的处理结果。常见的状态码有200(成功)、404(未找到)、500(服务器内部错误)等。
  • 原因短语:原因短语是对状态码的文本解释,用于提供关于请求处理结果的更详细的信息。
  • 响应首部:响应首部包含了一些额外的信息,如响应内容的类型、长度等。这些信息对于理解响应内容非常重要。
  • 响应主体:响应主体是实际的数据内容,即服务器返回给客户端的具体信息。
1.2 常见HTTP状态码
类型状态码原因短语说明
成功200OK请求被正常处理
成功201Created请求被处理,并创建了一个新资源
成功204No Content请求处理成功,但无内容返回
重定向301Move Permanently永久重定向
重定向302Found临时性重定向
重定向304Not Modified请求的资源未被修改,重定向缓存的资源
客户端错误400Bad Request表示请求无效,即请求报文中存在错误
客户端错误401Unauthorized类似403,表示请求资源未授权
客户端错误403Forbidden表示请求资源被服务器拒绝访问
客户端错误404Not Found表示服务器上找不到请求的资源或URL无效
服务器端错误500Internal Server Error服务器内部发生错误
1.3 在flask中如何生成响应

响应大部分内容由服务器处理,大多数情况下,我们只负责返回主体内容。响应在flask中使用Response对象表示。

Flask会先判断是否可以找到与请求url相匹配的路由,如果没有返回404。如果找到,就会调用对应的视图函数,视图函数的返回值构成了响应报文的主题内容,正确返回的状态码为200。

1.3.1重定向

如果你访问http://localhost:5000/hi,你会发现页面加载后地址栏中的URL变成了http://localhost:5000/hellp。这种行为被称为重定向,你可以理解为网页跳转。

代码示例:

from flask import Flask, redirect, url_for@app.route('/hello')
def hello():	# 直接返回网页return redirect('/hi')@app.route('/hi')
def hi():return redirect(url_for('hello'))
1.3.2错误响应

如果你访问http://localhost:5000/brew/coffee,会获得一个418错误响应(I’m a teapot)

大多数情况下,flask可以自动处理常见的错误响应。Http错误对应的异常类在werkzeug的werkzeug.exceptions模块中被定义,抛出这些异常即可返回对应的错误响应。如果你想手动返回错误响应,你可以使用flask提供的abort()函数。

from flask import Flask, abort@app.route('/404')
def not_found():abort(404)

abort 函数不需要使用return返回,但他之后的代码也不会在执行。

1.4响应格式
  1. 纯文本
    MIME类型:text/plain
    当MIME类型设置为纯文本时,浏览器会以文本形式显示返回值。
  2. HTML
    MIME类型:text/html
    当MIME类型设置为text/html时,浏览器会将返回值渲染成html。
  3. XML
    MIME类型:application/xml
    XML是指Extensible Markup Language(可扩展标记语言),他是一种简单灵活的文本格式,被设计用来存储和交换数据。XML和HTML的不同之处在于HTML的标签用于显示内容,而XML的标签只用于定义数据。
  4. JSON
    MIME类型:application/json
    JSON是指JavaScript object Notation(Javascript 对象表示法),是一种流行的、轻量的数据交换格式。他的出现是为了弥补xml的各种不足。在Python中,通过引入json模块,调用json.dumps()方法将字典、列表或元组序列化为JSON字符串。Flask提供了包装这些方法的jsonify()函数,使操作更方便。
from flask import jsonify@app.route('/foo')
def foo():return jsonify(name="hello", gender="45")return jsonify({"name": "hello", "gender": "45")return jsonify(message="error"), 500

flask获取json数据可以使用request.get_json()方法和request.json属性。

相关文章:

flask web学习之flask与http(二)

文章目录 1. HTTP响应1.1 响应报文1.2 常见HTTP状态码1.3 在flask中如何生成响应1.3.1重定向1.3.2错误响应 1.4响应格式 在flask程序中,客户端发出的请求触发相应的视图函数,获取返回值会作为响应的主体,最后生成完整的响应,即响应…...

基于Python的电商手机数据可视化分析和推荐系统

1. 项目简介 本项目旨在通过Python技术栈对京东平台上的手机数据进行抓取、分析并构建一个简单的手机推荐系统。主要功能包括: 网络爬虫:从京东获取手机数据;数据分析:统计各厂商手机销售分布、市场占有率、价格区间和好评率&am…...

汽车制造厂批量使用成华制造弹簧平衡器

数年来,成华制造都在不断的向各行各界输出着自己的起重设备,与众多企业达成合作,不断供应优质产品。近些年,成华制造以其卓越的产品质量和高效的生产能力,成功实现了弹簧平衡器的大规模批量供应,为重庆数家…...

一语道破爬虫,来揭开爬虫面纱

目录 一、爬虫(网络蜘蛛(Spider)) 1.1、是什么: 1.2、学习的原因 1.3、用在地方: 1.4、是否合法: 1.5、后果 案例: 二、应用领域 三、Robots协议 四、抓包 4.1、浏览器抓包 4.2、抓包工具 常见…...

时序分解 | Matlab实现贝叶斯变化点检测与时间序列分解

时序分解 | Matlab实现贝叶斯变化点检测与时间序列分解 目录 时序分解 | Matlab实现贝叶斯变化点检测与时间序列分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现贝叶斯变化点检测与时间序列分解 1.Matlab实现贝叶斯变化点检测与时间序列分解,完…...

Python 操作 MySQL:使用 mysql-connector-python 操作 MySQL 数据库

大家好,我是水滴~~ 当涉及到使用 Python 操作 MySQL 数据库时,mysql-connector-python 库是一个强大而常用的选择。该库提供了与 MySQL 数据库的交互功能,使您能够执行各种数据库操作,如连接数据库、执行查询和插入数据等。在本文…...

虚拟化技术和云计算的关系

1、云计算底层就是虚拟化技术。 (1)常见的虚拟化技术:VMware(闭源的,需要收费)、XEN、KVM (2)大部分公司用的虚拟化方案:XEN、KVM 2、虚拟化的历史 (1&am…...

【privateGPT】使用privateGPT训练您自己的LLM

了解如何在不向提供商公开您的私人数据的情况下训练您自己的语言模型 使用OpenAI的ChatGPT等公共人工智能服务的主要担忧之一是将您的私人数据暴露给提供商的风险。对于商业用途,这仍然是考虑采用人工智能技术的公司最大的担忧。 很多时候,你想创建自己…...

权威Scrum敏捷开发企业培训分享

课程简介 Scrum是目前运用最为广泛的敏捷开发方法,是一个轻量级的项目管理和产品研发管理框架。 这是一个两天的实训课程,面向研发管理者、项目经理、产品经理、研发团队等,旨在帮助学员全面系统地学习Scrum和敏捷开发, 帮助企业快速启动敏…...

面试要点,算法,数据结构等练习大全

有趣的算法,面试常常碰到,多种语言实现~ 1 从数组中找出两个数字使得他们的和是给定的数字 tags: #hash 使用一个散列,存储数字和他对应的索引。然后遍历数组,如果另一半在散列当中,那么返回 这两个数的索引&#x…...

八皇后问题(C语言)

了解题意 在一个8x8的棋盘上放置8个皇后,使得任何两个皇后都不能处于同一行、同一列或同一斜线上。问有多少种方法可以放置这8个皇后? 解决这个问题的目标是找到所有符合要求的皇后摆放方式,通常使用回溯算法来求解。回溯算法会尝试所有可能…...

利用网络教育系统构建个性化学习平台

在现代教育中,网络教育系统作为一种创新的学习方式,为学生提供了更加个性化和灵活的学习体验。在本文中,我们将通过简单的技术代码,演示如何构建一个基础的网络教育系统,为学生提供个性化的学习路径和资源。 1. 环境…...

滤波器opencv

在OpenCV中,滤波器用于对图像进行平滑、锐化、边缘检测等操作。以下是一些常用的滤波器及其在OpenCV中的Python代码示例: 均值滤波器(平滑图像): import cv2 import numpy as np# 读取图像 image cv2.imread(path_t…...

使用 Docker Compose 部署 Halo 2.x 与 MySQL

使用 Docker Compose 部署 Halo 2.x 与 MySQL 本文主要介绍使用 Docker Compose 部署 Halo 2.x 和 MySQL, 主要针对小白。 有一定基础的, 可以直接去官网查看。 博主博客 https://blog.uso6.comhttps://blog.csdn.net/dxk539687357 一、Docker 与 Dock…...

openGauss学习笔记-179 openGauss 数据库运维-逻辑复制-发布订阅

文章目录 openGauss学习笔记-179 openGauss 数据库运维-逻辑复制-发布订阅179.1 发布179.2 订阅179.3 冲突处理179.4 限制179.5 架构179.6 监控179.7 安全性179.8 配置设置179.9 快速设置 openGauss学习笔记-179 openGauss 数据库运维-逻辑复制-发布订阅 发布和订阅基于逻辑复…...

2023十大编程语言及未来展望

2023十大编程语言及未来展望 1. 2023年十大编程语言排行榜2. 十大编程语言未来展望PythonCCJavaC#JavaScriptPHPVisual BasicSQLAssembly language 1. 2023年十大编程语言排行榜 TIOBE排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎&a…...

Docker启动各种服务

文章目录 1 启动MySQL2 启动maven,用于编译java程序3 容器内启动sshd,用于远程编码和调试 1 启动MySQL 守护方式运行一个容器: docker run --name mysql5.7 -e MYSQL_ROOT_PASSWORD123456 -p 3307:3306 -d mysql进入容器: dock…...

AndroidR集成三方Native服务组件

一、背景 该项目为海外欧盟市场版本,需集成三方IDS安全组件,进程运行时注入iptables指令至链表,检测网络运行状态,并收集异常日志并压缩打包成gz文件,提供给Android上层应用上报云端。 二、分析 1、将提供的组件包集成至系统vendor分区 /vendor/bin/idsLogd/vendor/li…...

C++连接数据库(DataBase)之加载外部依赖项

文章目录 在VS中进行配置一、 先找到VS的解决方案资源管理器:二、 找到“属性”,进行附加项配置三、 移植libmysql.dll目录 在VSCode中进行配置依赖文件的移动库文件的移动可能遇到的问题 重点!!!!&#xf…...

论文阅读——Slide-Transformer(cvpr2023)

Slide-Transformer: Hierarchical Vision Transformer with Local Self-Attention 一、分析 1、改进transformer的几个思路: (1)将全局感受野控制在较小区域,如:PVT,DAT,使用稀疏全局注意力来…...

别再只盯着IoU了!用Python手把手教你计算语义分割的95% Hausdorff距离(附完整代码)

超越IoU:用Python实战95% Hausdorff距离的医学影像分割评估 当我们在医院看到CT扫描图像上肿瘤边缘被红色轮廓线精准勾勒时,很少有人会思考这背后的算法是如何评估自己分割结果的准确性的。传统指标如IoU(交并比)和Dice系数固然流…...

XL6008直流升压电路设计与应用指南

基于XL6008的直流升压电路设计指南 1. 项目概述 1.1 应用背景 便携式电子设备对电源系统提出了特殊要求:在保持轻量化的同时,需要提供稳定的工作电压。由于单节锂电池的标称电压为3.7V(满电4.2V),而许多电子元件需要…...

嵌入式开发中的静态代码分析工具与应用

嵌入式代码静态分析工具深度解析1. 静态代码分析技术概述1.1 传统编译器的局限性标准C语言编译器通常只能检测代码中的语法错误和部分潜在缺陷,对于程序架构设计和逻辑层面的问题往往无能为力。这种局限性在嵌入式开发中尤为明显,因为嵌入式系统对代码质…...

全球碳块市场调查:年复合增长率(CAGR)稳定保持在3.4%(2026 - 2032)

市场规模:稳健增长,潜力巨大QYResearch调研数据显示,2025年全球碳块市场规模预计约为17.75亿美元,而到2032年,这一数字将跃升至22.36亿美元。在2026 - 2032年期间,年复合增长率(CAGR&#xff09…...

免费内容解锁工具:提升信息获取效率的技术解决方案

免费内容解锁工具:提升信息获取效率的技术解决方案 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代,专业内容与普通用户之间往往隔着一道…...

UCF-SST-CitySim数据集:面向智能交通研究的高精度轨迹数据解决方案

UCF-SST-CitySim数据集:面向智能交通研究的高精度轨迹数据解决方案 【免费下载链接】UCF-SST-CitySim1-Dataset 项目地址: https://gitcode.com/gh_mirrors/ucf/UCF-SST-CitySim-Dataset 如何解决复杂道路场景的数据缺失问题?——CitySim的价值定…...

【经验贴】运营岗考过CDA数据分析师一级经验分享

终于把CDA一级拿下了!查成绩那一刻真的挺开心的,不是多难,但全程自己一点点学出来,特别有成就感。今天就把我整个备考过程老老实实写出来,给正在准备的小伙伴一个参考。一、备考原因我最开始考CDA,完全是因…...

突破信息获取壁垒:智能内容解锁工具使用指南

突破信息获取壁垒:智能内容解锁工具使用指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 你是否曾遇到这样的情况:一篇专业的技术文章、一份重要的研究报告…...

Spigot服务器搭建后,别忘了做这5件事:优化、备份、插件与安全基础设置

Spigot服务器搭建后必做的5项关键优化与安全设置 当你第一次看到Spigot服务器成功启动时,那种成就感确实令人兴奋。但很快你会发现,一个能运行的基础服务器和真正稳定、高效、安全的游戏环境之间,还有不小的距离。很多新手服主在这个阶段容易…...

M.2 SSD硬件电路设计实战:从接口规范到高速信号布局

1. M.2 SSD硬件设计入门:从接口规范说起 第一次接触M.2 SSD设计时,我被各种接口类型和协议搞得晕头转向。现在回想起来,其实只要抓住几个关键点就能快速上手。M.2接口作为Intel推出的新一代存储标准,已经全面取代了老旧的mSATA接口…...