RESTful API设计-响应http代码

时间:2019-01-08 08:55:28

标签: rest

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

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

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

2 个答案:

答案 0 :(得分:1)

  

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

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

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

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

  

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

响应主体是最简单的部分-

  

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

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

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

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

答案 1 :(得分:0)

由于这些参数不需要任何参数,因此验证和ApplyCerts不需要输入,错误应为500

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