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

网络状态码-经验笔记

网络状态码-经验笔记

引言

在网络通信中,HTTP(Hypertext Transfer Protocol)状态码是服务器向客户端(通常是Web浏览器)发送响应时所包含的重要信息之一。
这些状态码指示了客户端请求的结果。
了解并正确使用这些状态码对于构建健壮的Web应用和服务至关重要。

HTTP状态码分类

HTTP状态码分为五大类,每种类别代表了不同含义:

  1. 1xx Informational(信息性状态码)
  2. 2xx Successful(成功状态码)
  3. 3xx Redirection(重定向状态码)
  4. 4xx Client Error(客户端错误状态码)
  5. 5xx Server Error(服务器错误状态码)

1xx Informational

这类状态码用于传输过程中的临时响应,客户端应继续处理请求或等待进一步的信息。

  • 100 Continue:指示客户端继续发送请求的剩余部分。
  • 101 Switching Protocols:服务器正在切换协议,遵照Upgrade请求头字段的值。

2xx Successful

这类状态码表示请求已被成功接收、理解和接受。

  • 200 OK:标准的响应成功状态码。
  • 201 Created:请求成功且创建了一个新的资源。
  • 202 Accepted:请求已接受待处理,但处理尚未完成。
  • 204 No Content:请求已成功处理,但没有返回任何内容。
  • 206 Partial Content:服务器已成功处理了部分GET请求。

3xx Redirection

这类状态码指示需要客户端采取进一步的动作才能完成请求。

  • 300 Multiple Choices:请求的资源对应多个位置,客户端可以选择其中一个。
  • 301 Moved Permanently:请求的资源已永久移动到新位置。
  • 302 Found (Temporary Redirect):请求的资源临时位于不同的URI,未来请求应使用原来的URI。
  • 303 See Other:客户端应通过GET方法重定向到另一个URI。
  • 304 Not Modified:客户端已拥有资源的最新版本,无需再次下载。
  • 307 Temporary Redirect:请求的资源临时位于不同的URI,但未来请求应使用原来的URI。
  • 308 Permanent Redirect:请求的资源已永久移动到新位置,客户端应使用新的URI。

4xx Client Error

这类状态码表示客户端发送的请求有错误,服务器无法处理。

  • 400 Bad Request:服务器无法理解请求的格式。
  • 401 Unauthorized:请求需要用户身份验证。
  • 403 Forbidden:服务器理解请求客户端的请求,但拒绝执行此请求。
  • 404 Not Found:请求的资源不存在。
  • 405 Method Not Allowed:请求的方法(如POST、GET等)不被允许用于请求的资源。
  • 409 Conflict:请求与当前资源状态冲突。
  • 415 Unsupported Media Type:服务器拒绝请求,因为请求实体的格式不受请求的目标资源支持。
  • 429 Too Many Requests:用户已发出太多请求,在指定时间内不能再发请求。

5xx Server Error

这类状态码表示服务器在处理请求时出现了错误。

  • 500 Internal Server Error:服务器遇到了一个未曾预料的情况,无法完成对请求的处理。
  • 501 Not Implemented:服务器不支持请求的功能。
  • 502 Bad Gateway:作为网关或代理工作的服务器从上游服务器收到了无效的响应。
  • 503 Service Unavailable:服务器目前无法使用(可能是服务器过载或进行维护)。
  • 504 Gateway Timeout:作为网关或代理工作的服务器从上游服务器等待响应的时间太长。
  • 505 HTTP Version Not Supported:服务器不支持请求中使用的HTTP协议版本。

使用场景示例

  1. 创建资源:当客户端发送一个POST请求创建一个新资源时,如果创建成功,服务器应返回201 Created状态码,并在响应头中包含新资源的URI。
  2. 获取资源:如果客户端发送GET请求来获取一个存在的资源,服务器应该返回200 OK状态码和资源数据。
  3. 资源不存在:如果客户端尝试访问一个不存在的资源,服务器应该返回404 Not Found状态码。
  4. 资源更新:当客户端发送PUT或PATCH请求更新资源时,如果更新成功,服务器应该返回200 OK状态码。
  5. 资源删除:当客户端发送DELETE请求删除资源时,如果删除成功,服务器应该返回204 No Content状态码。
  6. 身份验证:如果客户端没有提供必要的身份验证信息,服务器应该返回401 Unauthorized状态码。
  7. 权限不足:如果客户端尝试访问受限资源但没有足够的权限,服务器应该返回403 Forbidden状态码。
  8. 服务器错误:如果服务器在处理请求时遇到问题,比如内部错误或数据库问题,应该返回500 Internal Server Error状态码。

实现细节

后端编程

在后端开发中,可以通过以下方式设置HTTP状态码:

  • Node.js (Express)

    app.get('/example', function(req, res) {res.status(200).send('Resource found');
    });
    
  • Python (Flask)

    from flask import Flask, jsonify, make_responseapp = Flask(__name__)@app.route('/example')
    def example():response = make_response(jsonify({'message': 'Resource found'}), 200)return response
    
  • Java (Spring Boot)

    import org.springframework.http.HttpStatus;
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;@RestController
    public class ExampleController {@GetMapping("/example")public ResponseEntity<String> example() {return new ResponseEntity<>("Resource found", HttpStatus.OK);}
    }
    

错误处理

为了确保能够有效地处理错误并返回适当的HTTP状态码,你可以在后端代码中实现错误处理机制。这通常涉及到使用异常处理来捕获错误,并根据错误类型设置不同的状态码。

例子:异常处理

from flask import Flask, jsonify, make_responseapp = Flask(__name__)@app.errorhandler(404)
def not_found(error):return make_response(jsonify({'error': 'Not found'}), 404)@app.errorhandler(Exception)
def handle_exception(e):code = 500if isinstance(e, ValueError):code = 400return make_response(jsonify({'error': str(e)}), code)

结论

正确使用HTTP状态码对于构建健壮的Web应用和服务至关重要。
通过在代码中显式地设置状态码,你可以覆盖服务器默认的行为,并提供更具体和有意义的反馈给客户端。
此外,良好的错误处理机制可以帮助提高应用程序的稳定性和用户体验。

相关文章:

网络状态码-经验笔记

网络状态码-经验笔记 引言 在网络通信中&#xff0c;HTTP&#xff08;Hypertext Transfer Protocol&#xff09;状态码是服务器向客户端&#xff08;通常是Web浏览器&#xff09;发送响应时所包含的重要信息之一。 这些状态码指示了客户端请求的结果。 了解并正确使用这些状态…...

c++ 实现 actor 框架

服务端&#xff1a;https://github.com/xukeawsl/coro_actor 客户端&#xff1a;https://github.com/xukeawsl/coro_actor_client...

应对猫咪掉毛挑战,希喂、小米热门宠物空气净化器实测功效PK

随着养宠人群的增多&#xff0c;铲屎官们的需求日益增长&#xff0c;市场上出现了很多品牌的宠物空气净化器。然而&#xff0c;产品质量参差不齐&#xff0c;给消费者选择带来不少困难。劣质宠物空气净化器不仅无法有效去除宠物毛发、皮屑、异味及空气中的有害微粒&#xff0c;…...

0002 保险会计及其特殊性

保险会计是将会计理论专门应用于保险公司的专业会计领域&#xff0c;它是会计学的一个重要分支。作为一个分支&#xff0c;保险会计具有独特的特性&#xff0c;这些特性主要表现在以下几个方面&#xff1a; 产品的无形性&#xff1a;保险产品本质上是一种无形的商品&#xff0c…...

ChatTTS:终极文本转语音工具,支持API!

ChatTTS&#xff1a;终极文本转语音工具&#xff0c;支持API&#xff01; 文本转语音&#xff08;TTS&#xff09;系统的发展已经取得了长足的进步。从最初的机械化、平坦的声音&#xff0c;到如今听起来令人惊讶的人声&#xff0c;ChatTTS作为这一领域的新成员&#xff0c;旨…...

VUE和Element Plus

1.VUE 1.下载和配置环境 使用vue编程&#xff0c;我们需要使用到的编程软件是vs code&#xff0c;还需要使用node.js&#xff0c;这个的作用就类似于JDK&#xff0c;当我们都下载好之后&#xff0c;winR键打开命令提示符&#xff0c;我们在这里可以查看版本&#xff0c; npm…...

Python学习笔记(五)

""" 演示tuple元组的定义和操作 """# 元组一旦定义完成&#xff0c;就不可修改 # 定义元组 # t1 (1, "Hello", True) # t2 () # 定义空元组 # t3 tuple() #定义空元组 # print(f"t1的类型是&#xff1a;{type(t1)}, 内容是&…...

Linux企业级应用(一)构建企业级Linux应用平台:全面指南

文章目录 构建企业级Linux应用平台&#xff1a;全面指南前言1. Linux企业级应用简介2. 构建企业级网站应用平台使用LNMP架构构建Web服务器部署MySQL数据库主从复制与读写分离 3. 实施虚拟化技术部署KVM虚拟化平台使用LVS和Keepalived实现负载均衡与高可用性 4. 文件系统与分布式…...

LeetCode112 路径总和

前言 题目&#xff1a; 112. 路径总和 文档&#xff1a; 代码随想录——路径总和 编程语言&#xff1a; C 解题状态&#xff1a; 成功解答&#xff01; 思路 比较简单的一个思路是遍历所有的路径&#xff0c;求和后再查找目标值。但是&#xff0c;最好的方法是一边遍历&#x…...

TI AWR1843 毫米波雷达实物展示

引言 随着自动驾驶、工业自动化以及智能交通系统的快速发展&#xff0c;雷达传感器在现代科技中的重要性日益提升。毫米波雷达凭借其高精度测距、抗干扰能力强等特点&#xff0c;逐渐成为各类感知系统中的关键技术。德州仪器&#xff08;TI&#xff09;推出的 AWR1843 毫米波雷…...

前端JS总结(下)之事件操作

目录 前言 事件基础 事件的三部分&#xff1a; 常见的事件&#xff1a; 鼠标事件&#xff1a; 键盘事件&#xff1a; 表单事件&#xff1a; onfocus和onblur&#xff1a;获取焦点和失去焦点 onselect&#xff1a;选中单行文本框/多行文本框中的内容 onchange&#xff…...

如何妙用哈希表来优化遍历查找过程?刷题感悟总结,c++实现

先上题目 题目链接&#xff1a;题目链接 这题我最先想到的就是前缀和a&#xff0c;构造好了以后就遍历每一个[l,r]数组&#xff08;满足题目要求的连续区间数组&#xff09;&#xff0c;奈何倒数第二个样例时间超限 先给出原思路代码 class Solution { public:int subarray…...

【设计模式】漫谈设计模式

这篇文章里说一下对设计模式的个人的理解。本篇文章更类似于随笔而非技术文档。 设计模式最早是在上个世纪就被人提出来了&#xff0c;如今被奉为圣经&#xff0c;也就是GOF等人写的《设计模式》&#xff0c;其中的设计模式&#xff0c;是指导开发者如何进行开发出高内聚、低耦…...

第N5周:Pytorch文本分类入门

本文为365天深度学习训练营 中的学习记录博客原作者&#xff1a;K同学啊 任务&#xff1a; ●1. 了解文本分类的基本流程 ●2. 学习常用数据清洗方法 ●3. 学习如何使用jieba实现英文分词 ●4. 学习如何构建文本向量 一、前期准备 环境安装 这是一个使用PyTorch实现的简单文…...

SpringBoot 自定义 starter

1. 官方文档 SpringBoot 版本 2.6.13&#xff0c;相关链接 Developing with Spring Boot 1.1 什么是 Starter Starters are a set of convenient dependency descriptors that you can include in your application. You get a one-stop shop for all the Spring and relate…...

TDengine Invalid data format 问题定位

Invalid data format 看语义是数据类型不符&#xff0c;通常这个报错出现在使用行协议写入时。 如果是批量数据写入&#xff0c;想定位是哪条语句的问题&#xff0c;需要查看客户端日志。 如何确定使用的是哪个日志 lsof -p pidof taosadapter | grep taoslog如果没有安装lso…...

Spring Boot 使用 MongoDB 教程

&#x1f341; 作者&#xff1a;知识浅谈&#xff0c;CSDN签约讲师&#xff0c;CSDN博客专家&#xff0c;华为云云享专家&#xff0c;阿里云专家博主 &#x1f4cc; 擅长领域&#xff1a;全栈工程师、爬虫、ACM算法 &#x1f525; 微信&#xff1a;zsqtcyw 联系我领取学习资料 …...

Python办公自动化:使用openpyxl 创建与保存 Excel 工作簿

1 创建新的工作簿 在开始任何 Excel 操作之前&#xff0c;首先需要创建一个工作簿。openpyxl 提供了简单的接口来创建新的工作簿。 创建一个空白的工作簿 我们可以使用 openpyxl.Workbook() 来创建一个新的空白工作簿。以下是一个简单的示例&#xff1a; import openpyxl# …...

【张】#11 Union 共用体

Union 共用体可以存储不同的数据类型&#xff0c;但只能同时存储其中的一种类型。 #include <iostream> using namespace std;struct Product {char productName[20];int type;//1 int ,else charunion{int id_int;char id_chars[20];}; };int main(){Product product; …...

Xcode 在原生集成flutter项目

笔者公司有一个从2017年就开始开发的iOS和安卓原生项目&#xff0c;现在计划从外到内开始进行项目迁徙。 1》从gitee拉取flutter端的代码&#xff1b;&#xff08;Android报错Exception: Podfile missing&#xff09; 2》替换Xcode里的cocopods里Podfile的路径 然后报警 然后…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...