关于 RESTful API 中 HTTP 状态码的定义

其中 2XX/3XX 其实都是请求成功,但是结果不同。4XX 是请求出错,5XX 是服务器处理出现错误。

200

这个最容易理解,就是正确的请求返回正确的结果,如果不想细分正确的请求结果都可以直接返回200。

201

表示资源被正确的创建。比如说,我们 POST 用户名、密码正确创建了一个用户就可以返回 201。

202

请求是正确的,但是结果正在处理中,没法返回对应的结果。比如说,我们请求一个需要大量计算的结果,但是并没有计算结束时,可以返回这个,这时候客户端可以通过轮询等机制继续请求。

203

请求的代理服务器修改了源服务器返回的 200 中的内容,一般用不到。比如说,我们通过代理服务器向服务器 A 请求用户信息,服务器 A 正常响应,但代理服务器命中了缓存并返回了自己的缓存内容,这时候它返回 203 告诉我们这部分信息不一定是最新的,我们可以自行判断并处理。

204

请求正确,但是没有需要返回的内容。比如说,我们请求删除某个用户,删除成功可以返回 204。

205

类似 204,但是要求请求者重置视图,一般也用不到。比如说,我们请求删除某个用户,服务器返回 205 的话,我们就刷新现在的用户列表。

206

请求成功,但根据请求头只返回了部分内容。比如说,我们下载一部片,共有 10 部分,我们把请求也分成了 10 次(防止一次请求过大),这时候服务器就可以返回 206 并在其头部告诉我们这是哪一部分,然后再根据这个信息进行拼装。

300

请求成功,但结果有多种选择。比如说,我们下载一部片,服务器有 avi、mp4 等格式,这时候可以返回 300,并在 body 里告知有哪些格式,然后用户可以根据这些格式再次请求。

301

请求成功,但是资源被永久转移。比如说,我们要下载葫芦娃,但是由于旧的存储服务商涨价了,现在要使用新的存储服务了,要去新地址下载,这时候可以返回 301,并在 header 的 Location 中告知新的地址,以后也应当到这个地址下载。

302

请求成功,但是资源被临时转移了。和 301 不同的是,除非是 HEAD 请求,否则新地址的信息应当在 body 中返回,并且资源只是临时转移,以后不应当通过新地址来下载。

303

类似 302,但要求使用 GET 来访问新的地址来获取资源。

304

请求的资源并没有被修改过。比如说,我们发送请求想看看 5.20 后的情侣信息,服务器查询没有新的情侣信息产生,这时候可以返回 304,然后客户端可以继续用旧的数据。

305

请求的资源必须通过代理访问。比如说,我们想请求服务器 A 上新的 iPhone 的信息,但是需要通过代理服务器才能访问,如果直接请求了服务器 A,没有经过代理服务器,这时候服务器 A 就可以返回 305 从而告诉我们应当访问代理服务器。

306

不用了。

307

类似 302,但要求使用原有的请求方式来通过新地址获取资源。

308

类似 301,但要求使用原有的请求方式来通过新地址获取资源。

400

请求出现错误,比如请求头不对等,所有不想明确区分的客户端请求出错都可以返回 400。

401

没有提供认证信息。比如说,请求的时候没有带上 Token 等。

402

为将来的需要所保留的状态码。

403

请求的资源不允许访问。比如说,你使用普通用户的 Token 去请求管理员才能访问的资源。

404

请求的内容不存在。

405

请求的方法不允许使用。比如说,服务器只实现了 PATCH 了局部更新资源,并没有实现 PUT 来替换资源,而我们使用了 PUT,这时候服务器可以返回 405 来告知并没有实现对 PUT 的相关处理。

406

请求的资源并不符合要求。比如说,我们 header 里请求 JSON 格式的数据,但是服务器只有 XML 格式的数据,这时候可以返回 406 告知。

407

类似 401,但是要求必须去同代理服务器进行认证。

408

客户端请求超时。我们想 POST 创建一个用户,虽然建立了连接,但是网络不好,服务器在规定时间内没有得到我们的请求信息,这时候服务器可以返回 408 告诉我们超时了。然后我们可以重新发送请求。

409

请求冲突。比如说,服务器要求不同用户不能重名,服务器已经有了一个名叫小伟的用户,这时候我们又想创建一个名叫小伟的用户,服务器可以返回 409,告诉我们冲突了,也可以在 body 中明确告知是什么冲突了。

410

请求资源曾经存在,但现在不存在了。比如说,我们下载葫芦娃,但是因为版权被删了,下载不了了,这时候服务器返回 410,告诉我们洗洗早点睡。

411

没有提供请求资源的长度。比如说,我们下载葫芦娃,服务器只允许我们分部分下载,我们如果不告诉服务器我们要下载哪部分,服务器就返回 411 警告我们。

412

请求的资源不符合请求头中的 IF-* 的某些条件。比如说,我们下载葫芦娃,然后在请求头告知服务器要 5.20 后更新过的,服务器没有,于是返回了 412。

413

请求体过大。比如说,服务器要求上传文件不能超过 5M,但是我们 POST 了 10M,这时候就返回 413。

414

请求的 URI 太长了。比如说,我们提供了太多的 Query 参数,以至于超过了服务器的限制,这时候可以返回 414。

415

不支持的媒体类型。比如说,我们上传了一张七娃的 GIF 动图,而服务器只允许你上传 PNG 图片,这时候就返回 415。

416

请求的区间无效。比如说,我们分部分下载时请求葫芦娃的 10 分钟到 12 分钟的内容,但是这部葫芦娃只有 1 分钟的内容,这时候就返回 416。

417

预期错误。指服务器没法满足我们在请求头里的 Expect 相关的信息。

418

我是个茶壶。这是一个愚人节的玩笑,这个状态码就是用来搞笑的。

500

服务器错误。没法明确定义的服务器错误都可以返回这个。

501

请求还没有被实现。比如说,我们请求一个接口来自动拒绝项目经理的要求,但是这个接口只是美好的想象,并没有被实现,这时候可以返回 501。

502

网关错误。比如说,我们向服务器 A 请求下载葫芦娃,但是 A 其实只是一个代理服务器,他得向 B 请求葫芦娃,但是不知道为啥 B 不理他或者给他错误,这时候哦可以 A 返回 502 用来表示 B 这家伙傲娇了。

503

服务暂时不可用。比如说,服务器正好在更新代码重启。

504

类似 502,但是这时候是 B 不理 A,超时了 。

505

请求的 HTTP 版本不支持。比如说,现在强行根据 HTTP 1000 来请求。

关于 RESTful API HTTP状态码相关推荐

  1. 关于Restful API与状态码的设计

    一.API 1. 传输协议 采用HTTP JSON通讯协议 2. API版本控制 将API得版本号放入URL,http://api.example.com/v{n}/ v{n} n代表版本号,使用整形 ...

  2. 趣说API HTTP 状态码的使用

    在设计API HTTP 状态码的时候,我们总能听到两种声音: 第一种,也是大家最常用的: 所有接口的状态码都返回 200,然后在自定义错误码: # 正确响应 {"code: 200,&quo ...

  3. RESTful API无状态理解

    RESTful API无状态的理解 1. 传统会话 2. RESTFUL 参考链接 1. 传统会话 传统web应用程序使用远程会话.在这种方法中,应用状态完全保存在服务器上.远程会话样式是客户机-服务 ...

  4. HttpClient 4 API –获取状态码-getStatusLine()。getStatusCode()示例

    在HttpClient API中获取状态代码的快速指南. getStatusLine().getStatusCode()示例和相关的错误. 1.简介 在这个非常快速的教程中,我将展示如何使用HttpC ...

  5. SpringCloud工作笔记048---RESTful API 中 HTTP 状态码的定义_以及把RESTFul版本号_放到http协议header中_以及RestFul设计时的两个误区

    JAVA技术交流QQ群:170933152 ------------------------- RESTful架构有一些典型的设计误区. 最常见的一种设计错误,就是URI包含动词.因为"资源 ...

  6. 使用ASP.NET Core 3.x 构建 RESTful API - 3.3.1 HTTP状态码

    HTTP状态码会告诉API的消费者以下事情: 请求是否执行成功了 如果请求失败了,那么谁为它负责 HTTP的状态码有很多,但是Web API不一定需要支持所有的状态码.HTTP状态码一共分为5个级别: ...

  7. php返回200,关于API 使用 HTTP 状态码还是全部返回 200

    现在的项目api想用restful风格,然后目前的api接口返回规范:所有成功接口返回{status:200,msg:'',data:{}},出错接口返回{status:403,msg:'',data ...

  8. API的HTTP状态码设计

    一.现状: 前天与后端开发人员讨论了API接口的设计.有以下三种方案: 1.原始HTTTP协议 HTTP状态码就是该Request的状态码,不应该与后端业务混在一起(这也是一部分人使用该方案的理由). ...

  9. 4- vue django restful framework 打造生鲜超市 -restful api 与前端源码介绍

    使用Python3.6与Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站 项目支持支付宝支付(暂不支持微信支付),支持手机短信验证码注册, ...

最新文章

  1. mysql pom依赖关系_常用的POM依赖
  2. C++读取mysql中utf8mb4编码表数据乱码问题及UTF8转GBK编码
  3. QML基础类型之data
  4. 安卓手机浏览器排行_安卓手机双11性价比排行发布|拯救者手机发透明版|小米发大光圈手机镜头...
  5. Android插件化开发之用DexClassLoader加载未安装的APK资源文件来实现app切换背景皮肤
  6. oracle 10046详解,Oracle 10046事件详解
  7. 13 FI配置-财务会计-输入全局参数
  8. iis mysql_Windows10本地搭建IIS+PHP+MYSQL+phpMyAdmin运行环境图文教程(也可用于服务器)...
  9. 《为iPad而设计:打造畅销App》——快速回顾用户界面设计史
  10. 如何利用SOLIDWORKS BOM生成材料明细表
  11. v-model中修饰符lazy,number, trim的作用
  12. python毕业设计作品基于django框架 校园二手书籍交易系统毕设成品(4)开题报告
  13. 36艺教育完成3000万元Pre-A轮融资,星火资本投资 1
  14. 2023Java 并发编程面试题
  15. Opencv -- 18图像像素类型转换与归一化
  16. 机械手编程用c语言,51单片机机械手控制C程序.doc
  17. 普通文本el-tootip超出宽度自动显示省略号,悬停显示
  18. [转]最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现
  19. 前端700行代码项目练习--小米官网(仅html、css实现)
  20. root除miui广告,miui11去除广告

热门文章

  1. VS错误 CS0120 对象引用对于非静态的字段、方法或属性
  2. 【KV260】KV260的PMOD接口介绍
  3. 2月18日绿健简报,星期六,农历正月廿八
  4. 白嫖?超赞应用推荐全干货
  5. glidedsky挑战-图片式反爬(雪碧图)
  6. matlab 求旁瓣,主瓣、栅瓣和旁瓣(MATLAB源代码 解释)
  7. ML基础 - 深度神经网络中解决过拟合的方法
  8. ios 界面开发_iOS开发新手指南:界面-第一部分
  9. 推荐10个AI人工智能技术网站
  10. 关于论文中bib文件的参考格式