文档章节

如果请求缺少必需的参数,我应该使用什么HTTP状态响应代码?

 技术盛宴
发布于 02/20 14:22
字数 936
阅读 159
收藏 0

我在想412(前提条件失败),但是可能会有更好的标准?


#1楼

根据该规范,状态422最合适。

422(不可处理实体)状态代码表示服务器了解请求实体的内容类型(因此415(不支持的媒体类型)状态代码不合适),并且请求实体的语法正确(因此400(错误请求) )状态代码不合适),但无法处理其中的说明。 例如,如果XML请求主体包含格式正确(即,语法正确)但语义错误的XML指令,则可能发生此错误情况。

他们指出,格式错误的xml是语法错误的示例(要求400)。 格式错误的查询字符串似乎与此相似,因此400似乎不适用于缺少参数的格式正确的查询字符串。

UPDATE @DavidV正确地指出此规范适用于WebDAV,而不适用于核心HTTP。 但是,由于缺少更好的状态代码,一些流行的非WebDAV API仍在使用422( 请参阅参考资料 )。


#2楼

对于那些感兴趣的人,在这种情况下,Spring MVC(至少3.x)返回400,这对我来说似乎是错误的。

我测试了多个Google网址(accounts.google.com),并删除了必需的参数,在这种情况下,它们通常返回404。

我会复制Google。


#3楼

我会选择403。

RFC 2616-超文本传输​​协议-HTTP / 1.1

403禁止

服务器理解了该请求,但拒绝执行该请求。 授权将无济于事,不应重复该请求。 如果请求方法不是HEAD,并且服务器希望公开为什么未满足请求,则应在实体中描述拒绝原因。 如果服务器不希望将此信息提供给客户端,则可以改用状态代码404(未找到)。

您应在回复中说明失败的原因。 如果您不想这样做,请使用404。


#4楼

如果所需参数中的某些内容与API端点所需的内容不匹配(例如密码太短),我通常会选择422(无法处理的实体),但是对于缺少的参数,我会选择406(无法接受)。


#5楼

在我们的一个API项目中,我们决定为某个请求设置409状态,因为由于缺少参数而无法以100%的比例完全填充它。

HTTP状态代码“ 409冲突”对我们来说是一个很好的尝试,因为它的定义要求包括足够的信息供用户识别冲突的来源。

参考: w3.org/Protocols/

因此,在其他响应(例如400或404)中,我们选择409来强制需要查看请求中的一些注释,这有助于建立新的正确请求。

无论如何,我们的情况都是特别的,因为如果请求不完全正确,我们需要发送一些数据前夕,并且我们需要强制客户端查看消息并了解请求中的错误。

通常,如果我们只有一些缺失的参数,我们可以选择400和缺失参数的数组。 但是,当我们需要发送更多信息(例如特殊情况的消息)并且希望确保客户会妥善处理时,我们发送409

本文转载自:https://stackoom.com/question/CnZu/如果请求缺少必需的参数-我应该使用什么HTTP状态响应代码

粉丝 0
博文 1617
码字总数 0
作品 0
深圳
高级程序员
私信 提问
加载中

评论(0)

使用 Flask 开发 Web 应用(一)

微框架之“微” Flask 强调自己是一个用于 Web 开发的微框架。我们知道,开发 Web 应用主要的工作,就是对一个 Web 请求,接收其请求数据(输入),根据业务逻辑进行处理,然后返回相应的响应...

xuecan
2019/09/29
0
0
看完这个系列所有爬虫都easy!(一)爬虫介绍与request库使用

文章目录 1:爬虫的流程介绍 确认需求:你需要什么东西?你需要美女的图片 寻找需求:哪里能找到你想要的东西?百度图库 发送请求:发送访问页面的请求,获取页面的源代码。 解析数据:从冗杂...

cs张小菜
04/02
0
0
HTTP 204/205状态响应&HEAD请求

HTTP 304/200(from cache) 静态资源缓存原理 Http 206 文件断点续传下载原理 一.http 204/205状态响应 HTTP 204(no content)表示响应执行成功,但没有数据返回,浏览器不用刷新,不用导向新页...

IamOkay
2016/04/22
771
0
http超文本协议,让http不再难懂

一张思维导图: 协议 HyperText Transfer Protocol,超文本传输协议 一个无状态的请求/响应协议 是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准 基于TCP/IP通信...

MarkerHub
2017/12/18
1.8K
0
Ajax与Comet-JavaScript高级程序设计第21章读书笔记(1)

Ajax(Asynchronous Javascript + XML)技术的核心是,即: 。虽然名字中包含XML,但它所指的仅仅是这种无须刷新页面即可从服务器端获取数据的技术,其通信与数据格式无关,并不一定是XML数据。 ...

张文安
2017/05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[ASP.NET Core MVC] 如何实现运行时动态定义Controller类型?

昨天有个朋友在微信上问我一个问题:他希望通过动态脚本的形式实现对ASP.NET Core MVC应用的扩展,比如在程序运行过程中上传一段C#脚本将其中定义的Controller类型注册到应用中,问我是否有好...

osc_n0c6719w
17分钟前
26
0
团队作业第三次—项目需求分析

这个作业属于哪个课程 2020春|S班 (福州大学) 这个作业要求在哪里 团队作业第三次—项目需求分析 团队名称 如果有一天我变得很有钱 这个作业的目标 1.原型设计、2.类图设计、3.需求规格说明书...

osc_bcvwusz2
19分钟前
23
0
流媒体服务器、海康威视 大华摄像头实现视频监控、直播解决方案

  随着互联网+物联网进程的加快,视频监控应用领域变得越来越广泛,其中海康威视 大华等品牌的摄像头频繁出现在视野中。由于去年也实现过智慧工地项目上的视频监控方案,加上当今直播趋势不...

osc_47qtuhkb
21分钟前
16
0
流媒体服务器、海康威视 大华摄像头实现视频监控、直播解决方案

  随着互联网+物联网进程的加快,视频监控应用领域变得越来越广泛,其中海康威视 大华等品牌的摄像头频繁出现在视野中。由于去年也实现过智慧工地项目上的视频监控方案,加上当今直播趋势不...

osc_1qix3fyb
21分钟前
29
0
thymeleaf中使用javascript中的[[]]的3种处理方式

thymeleaf中使用javascript中的[[]]的处理方式 1: 使用 CDATA 模式 /* <![CDATA[ */ 和 /* ]]> */就OK了 <script th:inline='javascript'>/* <![CDATA[ *//* ]]> */</script> 2:......

独钓渔
23分钟前
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部