常见 HTTP 状态码分类和解释及服务端向前端返回响应时的最完整格式

news2024/11/7 13:15:18

目前的开发项目,准备明年的国产化,用了十年的自研系统借这个机会全部重写,订立更严格的规范,这里把返回格式及对应状态码记录一下。

在这里插入图片描述

常见 HTTP 状态码及解释

HTTP 状态码用于表示客户端请求的响应状态,它们分为五类:2xx 表示成功,3xx 表示重定向,4xx 表示客户端错误,5xx 表示服务器错误。以下是各类状态码的详细解释。

2xx 成功响应

状态码含义解释
200OK请求成功,服务器返回了请求的数据。GET 请求通常返回数据,PUT/POST 请求返回更新或创建的数据。
201Created请求成功创建了新资源,通常用于 POST 或 PUT 请求。响应头包含新资源的 URL。
202Accepted请求已接受,但尚未完成处理,通常用于异步任务。
204No Content请求成功,但服务器未返回内容,常用于删除操作或不需返回内容的操作。

3xx 重定向

状态码含义解释
301Moved Permanently资源的 URL 已永久更改,客户端应重定向到新的 URL,响应头包含 Location 字段。
302Found资源的 URL 暂时更改,客户端通常会重定向到响应头中的 Location 字段。
304Not Modified资源未更改,客户端可以使用缓存版本,通常用于浏览器缓存优化。

4xx 客户端错误

状态码含义解释
400Bad Request请求有误,服务器无法处理,通常由于无效的请求参数。错误详情通常在响应体的 errors 字段中返回。
401Unauthorized未经授权,通常是由于缺少或无效的身份认证(如 Token)。
403Forbidden已认证用户无权访问该资源,即使认证通过也无法访问。
404Not Found资源未找到,通常表示客户端请求的 URL 或资源不存在。
405Method Not Allowed请求方法不被允许,例如对只支持 GET 的资源使用了 POST。
422Unprocessable Entity请求格式正确,但语义错误,服务器无法处理。例如,提交了无效的数据格式。

5xx 服务器错误

状态码含义解释
500Internal Server Error服务器内部错误,可能是未知问题或代码异常导致无法完成请求。
502Bad Gateway作为网关或代理的服务器从上游服务器收到无效响应,通常表示服务器之间的通信问题。
503Service Unavailable服务器暂时无法处理请求,通常用于服务器维护或过载。
504Gateway Timeout作为网关或代理的服务器未能在规定时间内从上游服务器获得响应。

状态码使用建议

成功场景

  • 200 OK:用于数据获取(GET 请求)和数据更新(PUT 请求)的成功响应。
  • 201 Created:用于新资源创建成功,POST 或 PUT 请求中常见。
  • 204 No Content:用于不返回数据的请求,例如删除或不需返回内容的请求。

错误场景

  • 400 Bad Request:用于无效参数错误,并返回详细的 errors 信息。
  • 401 Unauthorized:用于身份认证失败。
  • 403 Forbidden:用于权限不足时的响应。
  • 404 Not Found:用于资源不存在的情况,客户端请求的 URL 错误时常见。
  • 422 Unprocessable Entity:用于语义错误或数据校验失败,并可返回具体错误信息。

系统级别问题

  • 500 Internal Server Error502 Bad Gateway503 Service Unavailable:用于服务器内部、网关或资源不可用等问题,通常表明可以稍后重试请求。

示例响应结构

设计响应结构时,可以包含 statuscodemessagedataerrors 等字段,以便前端能快速判断响应结果。

成功响应结构示例
{
  "status": "success",
  "code": 200,
  "message": "获取用户信息成功",
  "data": {
    "user": {
      "id": 1,
      "username": "user123",
      "email": "user123@example.com",
      "phone": "12345678901",
      "role": "admin"
    },
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
  },
  "errors": []
}
错误响应结构示例
{
  "status": "error",
  "code": 400,
  "message": "请求参数错误",
  "data": {},
  "errors": [
    {
      "field": "username",
      "message": "用户名不能为空"
    },
    {
      "field": "password",
      "message": "密码长度必须大于6个字符"
    }
  ]
}
错误响应格式(带有数据)
  1. 部分成功的数据: 在一些批量操作(如文件上传或数据验证)中,前端可能希望了解哪些请求成功,哪些失败,以便更好地展示处理状态。
  2. 默认值提示: 当输入缺少时,data 可以返回可用的默认值或推荐值。

如果允许在错误情况下返回 data,建议在 errors 中提供尽可能详细的说明,以便前端清楚如何使用 data 中的内容。可以考虑以下格式:

{
  "code": 400,
  "message": "请求参数错误,部分数据不可用",
  "data": {
    "user": {
      "username": "user123",     // 部分有效数据
      "email": "user123@example.com"
    },
    "defaults": {
      "role": "guest"             // 默认值或推荐值
    }
  },
  "errors": [
    {
      "field": "phone",
      "message": "手机号格式不正确"
    },
    {
      "field": "password",
      "message": "密码长度必须大于6个字符"
    }
  ]
}

结构设计建议

  • dataerrors 可共存,允许在错误响应中返回部分有效数据及详细错误信息。
  • message 提供简短描述,便于用户理解。
  • code 以 HTTP 状态码的数字形式显示,便于客户端判断请求状态。
  • codestatus 可以考虑合并

这种设计能确保数据结构清晰,便于前后端调试与维护。

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

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

相关文章

Docker在CentOS上的安装与配置

前言 随着云计算和微服务架构的兴起,Docker作为一种轻量级的容器技术,已经成为现代软件开发和运维中的重要工具。本文旨在为初学者提供一份详尽的指南,帮助他们在CentOS系统上安装和配置Docker及相关组件,如Docker Compose和私有…

echart折线图动感设计

效果: 起由: 需求设计大大觉得EChart图表的折线图太过于死板,没有交互感,希望可以实现上图的效果,经过一顿摸索发现EChart折线图effect属性可以让光点沿着折线的路径移动,从而实现动态效果,注意…

2-2.STM32之定时器TIM---输入捕获--实验2( PWMI模式测频率占空比)

输入捕获模式测频率、PWMI模式测频率占空比-CSDN博客 参考这篇文章! 来利用一个GPIO的定时器的两个通道进行捕获占空比和频率,看出可以看出。TI1FP1和TI2FP2,计数值分别在CCR1和CCR2中取, 测周法 IC.c #include "stm32f1…

mathtype中自定义数组维数问题

1 选中红框里的内容 2 设置矩阵维数,即行列数 3 选中中间数字部分,选中左边大括号,或者快捷键ctrll. ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/39ec0c8ed76a46d8b83d484a84ac59a7.png选中内部a

普吕克线( Plücker 线)

普吕克线 在 Plcker 坐标表示中,一条直线 l ‾ 1 \underline{l}_1 l​1​可以用以下两个向量来表示: l ‾ 1 l 1 ϵ m 1 \underline{l}_1 l_1 \epsilon m_1 l​1​l1​ϵm1​ 方向向量 l 1 l_1 l1​:表示直线的方向。动量向量 m 1 m_…

SLMi350DB-DG适用于驱动低边侧和高边侧的MOSFET和IGBT 兼容光耦的单通道隔离驱动器

SLMi350DB-DG是一款兼容光耦的单通道隔离驱动器,具有4A/7A源电流/灌电流以及3.75kVRMS隔离耐压值,适用于驱动低边侧和高边侧的MOSFET和IGBT。与光耦栅极驱动器相比,SLMi350DB-DG具有高共模瞬态抗扰度(CMTI)、低传播延迟和较小的脉宽失真等关键…

帕金森患者必看!这些维生素能帮你改善生活质量!

帕金森病,这个看似遥远的疾病,却悄然影响着许多人的生活质量。作为一种慢性神经退行性疾病,帕金森不仅会导致患者的运动能力受限,还会引发一系列非运动性症状,如便秘、情绪波动等。然而,你知道吗&#xff1…

5G智能对讲终端|北斗有源终端|北斗手持机|单兵|单北斗

在当今这个快速发展的数字化时代,5G技术的广泛应用正以前所未有的速度推动着各行各业的变革。作为这一技术浪潮中的重要一环,5G智能终端QM630D凭借其卓越的性能和多样化的功能,在林业、渔业、安保、电力、交通等多个领域展现出了巨大的应用潜…

【comfyui教程】ComfyUI有趣工作流推荐:快速换脸,创意随手掌握!

前言 在数字影像处理和创意表达领域,ComfyUI 绝对是你的得力助手!今天我们推荐一个非常有趣的工作流——快速换脸。无论你是图像编辑小白,还是深耕AI影像的达人,这个工作流都能让你快速实现面部迁移,体验全新的照片玩…

GPT原理;ChatGPT 等类似的问答系统工作流程如下;当用户向 ChatGPT 输入一个问题后:举例说明;ChatGPT不是通过索引搜索的传统知识库

目录 GPT原理 GPT架构 GPT 主要基于 Transformer 的解码器部分 ChatGPT 等类似的问答系统工作流程如下: 用户输入 文本预处理 模型处理 答案生成 输出回答 当用户向 ChatGPT 输入一个问题后:举例说明 文本预处理: ChatGPT不是通过索引搜索的传统知识库 GPT GPT…

Linux云计算 |【第五阶段】CLOUD-DAY8

主要内容: 掌握DaemonSet控制器、污点策略(NoSchedule、Noexecute)、Job / CronJob资源对象、掌握Service服务、服务名解析CluterIP(服务名自动发现)、(Nodeport、Headless)、Ingress控制器 一…

基于Zynq FPGA对雷龙SD NAND的测试

一、SD NAND 特征 1.1 SD 卡简介 雷龙的 SD NAND 有很多型号,在测试中使用的是 CSNP4GCR01-AMW 与 CSNP32GCR01-AOW。芯片是基于 NAND FLASH 和 SD 控制器实现的 SD 卡。具有强大的坏块管理和纠错功能,并且在意外掉电的情况下同样能保证数据的安全。 …

探索空间计算与 VR 设备的未来:4K4DGen 高分辨率全景 4D 内容生成系统

在当今科技飞速发展的时代,空间计算和 VR 设备正逐渐成为人们体验沉浸式场景的重要工具。而今天,我们要为大家介绍一款具有创新性的技术 ——4K4DGen 高分辨率全景 4D 内容生成系统,它为 VR/AR 沉浸式体验带来了全新的可能性。 一、项目概述 4K4DGen 项目的核心目标是实现 …

使用官网tar包制作OpenSSL及OpenSSH rpm包进行升级安装(OpenSSH_9.9p1, without OpenSSL未解决)

一、制作openssl-1.1.1w.rpm包 1、安装基础依赖包和rpmbuild及其依赖包 yum install curl which make gcc perl perl-WWW-Curl rpm-build rpm-build rpmdevtools tree -y yum install gcc-c glibc glibc-devel openssl openssl-devel \pcre-devel zlib zlib-devel perl…

Node.js回调函数以及事件循环使用介绍(基础介绍 三)

回调函数 Node.js 异步编程的直接体现就是回调。 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。 例如,我们可以…

Linux(CentOS)安装 MySQL

CentOS版本:CentOS 7 MySQL版本:MySQL Community Server 8.4.3 LTS 1、下载 MySQL 打开MySQL官网:https://www.mysql.com/ 直接下载网址:https://dev.mysql.com/downloads/mysql/ 其他版本 2、上传 MySQL 文件到 CentOS 使用F…

服务器被攻击排查记录

起因 我的深度学习的所有进程突然被killed,我以为是检修,后面发现好像简单的python代码可以正常运行。但是我的训练进程一启动就会被killed 第一时间没有用htop查看cpu,用top看着挺正常的,但是后面看htop,全是绿的&a…

TDengine 签约蘑菇物联,改造通用设备工业互联网平台

在当前工业互联网迅猛发展的背景下,企业面临着日益增长的数据处理需求和智能化转型的挑战。通用工业设备的高能耗问题愈发突出,尤其是由这些设备组成的公辅能源车间,亟需更高效的解决方案来提升设备运行效率,降低能源消耗。为此&a…

【大数据学习 | kafka高级部分】文件清除原理

2. 两种文件清除策略 kafka数据并不是为了做大量存储使用的,主要的功能是在流式计算中进行数据的流转,所以kafka中的数据并不做长期存储,默认存储时间为7天 那么问题来了,kafka中的数据是如何进行删除的呢? 在Kafka…

TOEIC 词汇专题:市场销售篇

TOEIC 词汇专题:市场销售篇 市场销售是企业推广产品和树立品牌形象的重要环节。今天为大家介绍在市场销售领域中常用的托业词汇,助力更好地理解相关英语场景。 1. 市场推广与活动 市场销售离不开推广活动,以下是一些核心词汇: A…