实例介绍
🖥️ 运行效果
🚀 实例简介
一款面向开发者的HTTP状态码速查桌面工具,涵盖1xx~5xx全部33个常见状态码,每个状态码都配有详细的中文说明和真实使用场景。支持关键词搜索、分类过滤、收藏常用状态码、一键复制说明到剪贴板。核心功能:全量状态码(1xx-5xx共33个)、即时搜索、分类过滤、收藏功能(JSON持久化)、一键复制、颜色编码区分不同分类。
💻 核心代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
HTTP状态码速查与学习工具
功能:分类展示1xx-5xx全部HTTP状态码、详细说明、使用场景、搜索过滤、收藏、一键复制
作者:好例子网 (haolizi.com)
"""
import tkinter as tk
from tkinter import ttk, messagebox
import platform
import json
import os
# 中文字体配置(Linux用文泉驿,Windows用微软雅黑)
CHINESE_FONT = "WenQuanYi Zen Hei" if platform.system() == "Linux" else "Microsoft YaHei"
# HTTP状态码数据库(涵盖常见状态码,含详细说明和使用场景)
HTTP_STATUS_CODES = [
# 1xx 信息性状态码
{"code": 100, "name": "Continue", "category": "1xx", "desc": "客户端应当继续发送请求。服务器已收到请求头部,表示愿意接受剩余请求体。", "scene": "客户端发送大请求体前,先用Expect: 100-continue试探服务器是否接受。"},
{"code": 101, "name": "Switching Protocols", "category": "1xx", "desc": "服务器理解并愿意切换协议(如HTTP→WebSocket)。", "scene": "WebSocket握手时,服务器返回101表示同意升级协议。"},
{"code": 102, "name": "Processing", "category": "1xx", "desc": "服务器已收到请求,正在处理中,但尚未完成。", "scene": "WebDAV等长时间处理场景,防止客户端超时。"},
# 2xx 成功状态码
{"code": 200, "name": "OK", "category": "2xx", "desc": "请求成功,服务器返回了请求的资源。", "scene": "GET请求成功返回页面、POST请求成功处理并返回结果。"},
{"code": 201, "name": "Created", "category": "2xx", "desc": "请求成功并创建了新资源。", "scene": "POST创建用户/文章成功后返回,Location头指向新资源URL。"},
{"code": 202, "name": "Accepted", "category": "2xx", "desc": "服务器已接受请求,但尚未处理完成。", "scene": "异步任务(如视频转码)已入队,稍后处理。"},
{"code": 204, "name": "No Content", "category": "2xx", "desc": "请求成功但无返回内容。", "scene": "DELETE删除资源成功、PUT更新成功但不需要返回体。"},
{"code": 206, "name": "Partial Content", "category": "2xx", "desc": "服务器成功处理了部分GET请求(断点续传)。", "scene": "下载大文件时Range请求,返回指定字节范围。"},
# 3xx 重定向状态码
{"code": 301, "name": "Moved Permanently", "category": "3xx", "desc": "资源已永久移动到新URL,搜索引擎会更新索引。", "scene": "网站域名更换、HTTP强制跳转HTTPS。"},
{"code": 302, "name": "Found", "category": "3xx", "desc": "资源临时移动到新URL,客户端应继续使用原URL。", "scene": "未登录用户跳转到登录页、临时维护页面。"},
{"code": 303, "name": "See Other", "category": "3xx", "desc": "请求结果在另一个URL上,应用GET方法获取。", "scene": "POST提交表单后重定向到结果页面(PRG模式)。"},
{"code": 304, "name": "Not Modified", "category": "3xx", "desc": "资源未修改,客户端可使用缓存版本。", "scene": "浏览器带If-Modified-Since请求,服务器判断资源未变。"},
{"code": 307, "name": "Temporary Redirect", "category": "3xx", "desc": "临时重定向,保持原请求方法不变(POST仍为POST)。", "scene": "与302类似,但严格要求不改变请求方法。"},
{"code": 308, "name": "Permanent Redirect", "category": "3xx", "desc": "永久重定向,保持原请求方法不变。", "scene": "与301类似,但严格要求不改变请求方法。"},
# 4xx 客户端错误状态码
{"code": 400, "name": "Bad Request", "category": "4xx", "desc": "请求语法错误,服务器无法理解。", "scene": "JSON格式错误、必填参数缺失、请求体损坏。"},
{"code": 401, "name": "Unauthorized", "category": "4xx", "desc": "请求需要身份验证,客户端未提供有效凭证。", "scene": "未登录访问受保护资源、Token过期或无效。"},
{"code": 403, "name": "Forbidden", "category": "4xx", "desc": "服务器理解请求但拒绝授权,即使认证也无法访问。", "scene": "普通用户访问管理员页面、IP被防火墙拦截。"},
{"code": 404, "name": "Not Found", "category": "4xx", "desc": "服务器找不到请求的资源。", "scene": "URL拼写错误、资源已删除、路由配置缺失。"},
{"code": 405, "name": "Method Not Allowed", "category": "4xx", "desc": "请求方法不被允许(如对只读接口用POST)。", "scene": "GET接口收到POST请求、DELETE接口不支持。"},
{"code": 408, "name": "Request Timeout", "category": "4xx", "desc": "请求超时,客户端未能在服务器规定时间内完成请求。", "scene": "网络慢导致请求体发送超时、长连接空闲超时。"},
{"code": 409, "name": "Conflict", "category": "4xx", "desc": "请求与资源当前状态冲突。", "scene": "并发更新同一资源、用户名已存在、版本冲突。"},
{"code": 410, "name": "Gone", "category": "4xx", "desc": "资源已永久删除,服务器不再知道其位置。", "scene": "API版本废弃、资源被彻底删除且不会恢复。"},
{"code": 413, "name": "Payload Too Large", "category": "4xx", "desc": "请求体过大,服务器拒绝处理。", "scene": "上传文件超过Nginx client_max_body_size限制。"},
{"code": 414, "name": "URI Too Long", "category": "4xx", "desc": "请求URL过长,服务器无法处理。", "scene": "GET参数过多导致URL超过2048字符限制。"},
{"code": 415, "name": "Unsupported Media Type", "category": "4xx", "desc": "请求的Content-Type不被支持。", "scene": "服务器只接受JSON但客户端发了XML。"},
{"code": 422, "name": "Unprocessable Entity", "category": "4xx", "desc": "请求格式正确但语义错误,无法处理。", "scene": "表单验证失败(如邮箱格式错误、密码太短)。"},
{"code": 429, "name": "Too Many Requests", "category": "4xx", "desc": "请求频率过高,触发限流。", "scene": "爬虫请求过快、API调用超过配额、Retry-After头告知等待时间。"},
# 5xx 服务器错误状态码
{"code": 500, "name": "Internal Server Error", "category": "5xx", "desc": "服务器内部错误,无法完成请求。", "scene": "代码抛出未捕获异常、数据库连接失败、配置错误。"},
{"code": 501, "name": "Not Implemented", "category": "5xx", "desc": "服务器不支持请求的功能。", "scene": "客户端用了PUT/DELETE但服务器只实现了GET/POST。"},
{"code": 502, "name": "Bad Gateway", "category": "5xx", "desc": "网关或代理服务器收到上游无效响应。", "scene": "Nginx反代后端服务崩溃、上游返回非法响应。"},
{"code": 503, "name": "Service Unavailable", "category": "5xx", "desc": "服务器暂时无法处理请求(过载或维护中)。", "scene": "服务器重启中、流量高峰触发熔断、Retry-After告知恢复时间。"},
{"code": 504, "name": "Gateway Timeout", "category": "5xx", "desc": "网关或代理服务器未及时收到上游响应。", "scene": "后端接口处理太慢、数据库查询超时、上游服务无响应。"},
{"code": 505, "name": "HTTP Version Not Supported", "category": "5xx", "desc": "服务器不支持请求的HTTP协议版本。", "scene": "客户端用HTTP/2但服务器只支持HTTP/1.1。"},
]
# 收藏文件路径
FAV_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "favorites.json")
class HTTPStatusTool(tk.Tk):
"""HTTP状态码速查与学习工具主窗口"""
def __init__(self):
super().__init__()
self.title("HTTP状态码速查与学习工具 — 好例子网")
self.geometry("900x650")
self.configure(bg="#f5f5f5")
self.favorites = self._load_favorites()
self._build_ui()
self._populate_list()
def _load_favorites(self):
"""加载收藏列表"""
if os.path.exists(FAV_FILE):
try:
with open(FAV_FILE, "r", encoding="utf-8") as f:
💡 适用场景
办公自动化、数据分析、快速原型开发
标签:
Python桌面版HTTP状态码速查与学习工具:1xx-5xx全分类展示、详细说明与使用场景、关键词搜索过滤、收藏常用状态码、一键复制说明
相关软件
- Python桌面版HTTP接口断言测试工具:可视化定义测试用例、自动发送请求、校验状态码与JSON字段、批量执行生成测试报告
- Python桌面版HTTP状态码速查与学习工具:1xx-5xx全分类展示、详细说明与使用场景、关键词搜索过滤、收藏常用状态码、一键复制说明
- Excel工作表批量重命名与顺序调整工具:一键导入多Sheet文件、自由调整顺序、批量添加前后缀、预览变更一键导出
- 二维码批量生成与识别工具:支持文本/URL/WiFi/名片多种格式、CSV导入批量导出PNG、图片二维码扫描解码、一键导出
- Docker Compose配置文件可视化生成器:多服务编排、端口映射、数据卷挂载图形化配置、环境变量管理、语法校验、一键导出docker-compose.yml
相关文章
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论