我正在编写rest,它将事务id作为输入并处理指定事务的退款。因此,在同一笔交易中,我收到了多个退款请求。但退款只能办理一次。在这种情况下,响应代码应该是什么,如果退款已经完成,而我收到了重复的要求退款相同的交易?
发布于 2017-11-24 11:28:00
您可以使用403来指示该操作被禁止,或者使用409来指示资源状态下的冲突:
6.5.3.403禁止
403(禁止)状态代码表示服务器理解请求,但拒绝授权请求。希望公开请求被禁止的原因的服务器可以在响应有效负载(如果有的话)中描述这个原因。 如果在请求中提供了身份验证凭据,则服务器认为它们不足以授予访问权限。..。然而,由于与证书无关的原因,请求可能被禁止。. 6.5.8.409冲突409(冲突)状态代码指示由于与目标资源的当前状态发生冲突而无法完成请求。此代码用于用户可能解决冲突并重新提交请求的情况。服务器应该生成包含足够信息的有效负载,以便用户识别冲突的来源。..。
必须返回对响应paylod中错误的良好描述。您可以使用RFC 7807作为参考。
发布于 2021-05-24 22:51:19
你可以用423锁着。与422非可处理实体不同,该实体可用于指示由于其状态无法处理请求,而423锁定可用于指示由于资源状态而无法处理请求。
403的问题在于它与授权有关,告诉请求的用户没有足够的权限,这意味着它可以通过提升的权限来完成。
409的问题是,它表明冲突可以由用户解决,然后再试一次。
但是423的问题也在于它可能被解锁。至少它通过告诉“由于源状态不能处理请求”而变得更接近了,这是合适的。
https://stackoverflow.com/questions/47472017
复制相似问题