asp.net-core - 为了响应在没有足够权限的情况下删除资源的请求,在休息 API 中引发的正确异常是什么?
问题描述
我正在使用 ASP.net Core 和位框架
创建一个 REST API
我们希望允许客户端能够仅删除他们自己创建的资源
问题:
如果客户端要求删除由另一个客户端创建的资源,
在 API 中引发的最佳异常是什么?
返回的最正确的 HTTP 状态代码是什么?
命名空间中实现的所有异常
Bit.Owin.Exceptions
是:\BadRequestException
ResourceNotFoundException
AppException
DomainLogicException
我应该在我的 API 中坚持这个例外列表吗?这个例外列表是否会包含更多例外以涵盖更多场景?
我认为必须返回这些状态代码之一,但哪一个更适合我们的条件?:
- 403 禁止
- 405 不允许
- 409 资源冲突
解决方案
我不熟悉您使用的框架。但是,让我给你我的 2 美分。从 API 消费者的角度来看,403
对于您问题中描述的情况,状态码似乎是一个相当合理的选择:
(
403
Forbidden) 状态码表示服务器理解请求但拒绝授权。希望公开请求被禁止的原因的服务器可以在响应负载(如果有)中描述该原因。[...]
或者,如果您打算隐藏资源的存在,请抛出映射到的异常404
:
希望“隐藏”当前存在的禁止目标资源的源服务器可以改为响应状态码
404
(未找到)。
推荐阅读
- javascript - 重新绑定 onclick, on* 事件监听器进行调试
- java - Java中的LinkedList:为什么它直接从扩展类间接实现List
- android - Android:是否可以将任何语言创建的任何库添加到 Android 项目中?
- selenium - 无限循环中的视频自动播放
- java - 在我的 Java 游戏中实现主菜单时使用 createBufferStrategy(int) 生成错误
- android - 我创建了水平卡片,但它们没有显示在我的片段中?
- c - 为什么gets()是跳过值输入?
- javascript - 是否有一个 javascript 函数仅用于索引 div 中的文本内容(而不是原始代码)?
- database - 3 个组合框都连接到 1 个数据源,需要能够选择单独的选项
- flask - 使用重定向将烧瓶中的值从表单传递到表