RESTful API设计-响应http代码

问题描述 投票:0回答:2

我需要使用POST进行2次操作。

VerifyCerts不需要参数。 在后端,它验证2个文件(之前上传的文件)是否正确。 如果出现错误,我应该退还什么? 我的意思是应该是http状态码4xx还是200,以及有关内容错误的信息?

ApllyCerts也不需要参数。 它尝试应用已经上传的证书文件。 出现错误(文件不正确)时,我应该返回什么4xx代码? 应对机构应该是什么?

rest
2个回答
1
投票

VerifyCerts不需要参数。 在后端,它验证2个文件(之前上传的文件)是否正确。 如果出现错误,我应该退还什么? 我的意思是应该是http状态码4xx还是200,以及有关内容错误的信息?

记住,HTTP对“动作调用”一无所知。 它了解资源以及资源的表示形式。 但是故意隐藏了实现细节。

在这里,听起来好像您有资源,并且该资源的表示是根据服务器上存储的数据计算得出的。 因此,即使2个文件当前“无效”,我也希望该响应伴随2xx代码。

(请求没有问题,服务器也没有问题,您只是在记录当前世界状况未与快乐路径保持一致)。

ApllyCerts也不需要参数。 它尝试应用已经上传的证书文件。 出现错误(文件不正确)时,我应该返回什么4xx代码? 应对机构应该是什么?

响应主体是容易的部分-

除响应HEAD请求外,服务器应发送一个包含错误情况说明以及它是暂时还是永久情况的表示。

响应代码更难。 我认为您可以为403 Forbidden409 Conflict提出合理的论点; 实际上,客户端的请求是尝试将资源从状态A转移到状态B,但实际上资源当前处于状态Z,而状态Z尚未转换为状态B。

实际上,我认为这不是很重要-默认情况下,这两个响应代码都不可用,通用消费者没有任何特殊原因来不同地处理这些代码,依此类推。 我看不出语义上的区别没有任何实际效果。

因此,如果以后有人说服您更改使用的那一个,我认为通用客户端的行为不会有所不同。


0
投票

由于这些不需要任何参数,意味着Verification和ApplyCerts不需要输入,因此错误应为500

HTTP状态500响应正文(json或text){错误代码:“ FileNOtFound” .. etc}

© www.soinside.com 2019 - 2024. All rights reserved.