首页 > 解决方案 > 为了响应在没有足够权限的情况下删除资源的请求,在休息 API 中引发的正确异常是什么?

问题描述

我正在使用 ASP.net Core 和位框架
创建一个 REST API 我们希望允许客户端能够仅删除他们自己创建的资源

问题:

如果客户端要求删除由另一个客户端创建的资源,

  1. 在 API 中引发的最佳异常是什么?

  2. 返回的最正确的 HTTP 状态代码是什么?

  3. 命名空间中实现的所有异常Bit.Owin.Exceptions是:\

    1. BadRequestException
    2. ResourceNotFoundException
    3. AppException
    4. DomainLogicException

    我应该在我的 API 中坚持这个例外列表吗?这个例外列表是否会包含更多例外以涵盖更多场景?


  1. 我认为必须返回这些状态代码之一,但哪一个更适合我们的条件?:

    • 403 禁止
    • 405 不允许
    • 409 资源冲突

标签: asp.net-corehttp-status-codesbit-framework

解决方案


我不熟悉您使用的框架。但是,让我给你我的 2 美分。从 API 消费者的角度来看,403对于您问题中描述的情况,状态码似乎是一个相当合理的选择:

6.5.3. 403 禁止

( 403Forbidden) 状态码表示服务器理解请求但拒绝授权。希望公开请求被禁止的原因的服务器可以在响应负载(如果有)中描述该原因。[...]

或者,如果您打算隐藏资源的存在,请抛出映射到的异常404

希望“隐藏”当前存在的禁止目标资源的源服务器可以改为响应状态码404(未找到)。


推荐阅读