我正在使用ASP.net Core和bit-framework创建一个rest API 我们希望允许客户端只删除他们自己创建的资源
如果客户端要求删除由另一个客户端创建的资源,
Bit.Owin.Exceptions
命名空间中实现的所有异常都是:\
BadRequestException
ResourceNotFoundException
AppException
DomainLogicException
我应该在我的API中坚持这个例外列表吗?这个例外列表是否包括更多例外以涵盖更多场景?基于@cassiomolin's answer,您可以根据以下文档创建自己的异常类型:
https://docs.bit-framework.com/introduction/web-api#exception-handling
add exception type to bit framework known exceptions
public class CanNotDeleteOtherClientResourceException : Exception, IKnownException, IHttpStatusCodeAwareException
{
public CanNotDeleteOtherClientResourceException(string message)
: base(message)
{
}
public HttpStatusCode StatusCode { get; set; } = HttpStatusCode.Forbidden;
}
我不熟悉你正在使用的框架。但是,让我给你2美分。从API消费者的角度来看,403
状态代码对于您的问题中描述的情况似乎是一个非常合理的选择:
403
(Forbidden)状态代码表示服务器理解请求但拒绝授权。希望公开请求被禁止的服务器可以在响应有效负载中描述该原因(如果有的话)。 [...]
或者,如果您打算隐藏资源的存在,则抛出映射到404
的异常:
希望“隐藏”当前存在的禁止目标资源的源服务器可以用状态代码
404
(未找到)进行响应。