POST Restful API 的响应代码 400 或 403

2023-12-30

我正在设计一个 POST Restful API,在这种情况下,我必须根据请求正文中提供的元素之一来授权用户。 例如。

{
division : "1",
name : "MyName",
address:{
no : 123,
street : "abc",
pincode : 222111
}
....
}

因此发出 POST 请求的用户应该被授权在第 1 部门工作。如果没有获取请求正文,我无法授权该用户。

另外,为了验证某些属性,我必须在 DB 中进行大量的 DB 调用,例如,检查上述地址是否具有有效的 pincode 值。

所以我的问题是我应该如何将错误代码返回给用户 -

  1. [编辑]如果请求中的除法无效(系统中不存在的东西) - 400 或 403 ?
  2. 如果提供了除法,但用户未经授权且 pincode 无效 - 400 表示无效 pincode 或 403 ?
  3. 如果 pincode 是强制属性并且请求中未提供,则错误代码应该是什么。我应该先检查 403,然后检查 400 还是反向?

基本上哪个错误代码可以继续其他?

也可以这样做:

400 – request is bad, syntactically (division/pincode or other mandatory values not provided)
403 – authorize user
400 – request is bad, data specific validation (heavier operation, requiring to hit DB)

[编辑]我们不想使用 422 错误代码


如有疑问,请查看RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

400 错误请求

由于格式错误,服务器无法理解该请求 句法。客户端不应该重复请求 修改。


403 禁忌

服务器理解该请求,但拒绝满足它。 授权不会有帮助,并且不应重复请求。如果 请求方法不是 HEAD 并且服务器希望公开 为什么请求没有得到满足,它应该描述原因 对于实体的拒绝。如果服务器不希望 此信息可供客户端使用,状态码 404(不 发现)可以用它来代替。

如果请求中未提供除法 - 400 或 403?

我认为两者都不适用。语法 - 尽管缺少一些数据 - 是not畸形的。
此外,由于引用中提到的原因,403 似乎不正确:授权没有帮助 etc.

怎么样422 无法处理的实体 http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error?

422 无法处理的实体(WebDAV;RFC 4918)

该请求格式正确,但由于以下原因无法遵循 语义错误。

这就是我在这种情况下通常使用的方法。

如果提供了除法,但用户未经授权且 pincode 无效 - 400 表示无效 pincode 或 403?

再次强调,我认为 400 或 403 都不是一个好的案例。针对这种情况专门存在401

401 未经授权

类似于403禁止,但是专门用于身份验证时使用 为必填项,但已失败或尚未提供。响应 必须包含包含质询的 WWW-Authenticate 标头字段 适用于所请求的资源。请参阅基本访问身份验证 和摘要访问认证。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

POST Restful API 的响应代码 400 或 403 的相关文章

随机推荐

  • Twitter Bootstrap 模态宽度问题

    我的应用程序具有许多模式 所有模式都有不同的宽度 我知道您可以通过执行以下操作来设置模态内联的宽度 宽度 400 像素 左边距 200px 这效果很好 但是如果你压缩窗口 它会将模态占到屏幕的 50 所以你看不到一半的模态渲染 在这些小分辨
  • 如何将一个数据框按行拆分成多个数据框然后导出到excel?右

    这是我正在使用的数据 Sales lt data frame State c New York New Jersey Texas New Mexico California Kansas Florida Alaska Montana Mai
  • 如何在 JFrame 中启动命令行 Java 代码?

    我有一个通过基本命令行界面执行的Java 程序 我想知道是否将其放入窗口 JFrame 中 是否可以 我能怎么做 谢谢 如果你想在 jFrame 中使用命令行 我认为这不是一个好主意 如果JFrame启动了 说明程序已经启动了 您必须使用命
  • 设置javascript对象多级属性的简单方法?

    我正在尝试创建一个像这样的javascript对象 var allUserExpiry allUserExpiry aData userId aData courseId aData uscId aData 但我收到了类似的错误allUse
  • 如何根据字段描述的对象类型根据 JSON 模式验证 JSON 对象?

    我有许多对象 消息 需要根据 JSON 模式 draft 04 进行验证 每个对象都保证有一个 type 字段 用于描述其类型 但每种类型都有一组完全不同的其他字段 因此每种类型的对象都需要一个唯一的模式 我看到了几种可能性 但没有一种特别
  • 使用 ASP.NET MVC 3 的 NHibernate 会话 + 事务

    我目前正在编写一个新应用程序 尽管公司标准是使用 NHibernate 因为这是所有项目的标准 但我正在使用 ASP NET MVC 3 因为它现在已经成熟 我已经在控制器中实现了我的事务 这应该是你应该这样做的方式 所以它在我的根控制器中
  • 如何在android中以编程方式将图像添加到图库或以编程方式刷新图库

    我正在将一些图像从服务器下载到 SD 卡的文件夹中 图像已成功存储到 SD 卡中 但问题是 同时图像没有显示在图库中 如果我重新启动设备 它将显示在图库中 如何以编程方式刷新图库 以便每当我从服务器获取图像时都可以同时看到图像 我明白了 下
  • MySQL 持久连接

    我有10个应用服务器和1个mysql数据库 我想为 mysql 做连接池 但简单地启用 mysql pconnect 是行不通的 因为它会导致某些服务器比其他服务器拥有更多的连接 这种情况的最佳解决方案是什么 为什么要使用持久连接 它们可能
  • 如何从 DTD 或 XSD 生成示例 XML 文档?

    我们正在开发一个涉及大量 XML 转换的应用程序 我们本身没有任何正确的输入测试数据 只有 DTD 或 XSD 文件 我们想从这些文件中生成我们的测试数据 有没有一种简单 免费的方法可以做到这一点 Edit 显然没有免费的工具可以做到这一点
  • imagecreatefrompng 错误

  • warning(junit.framework.TestSuite$1): 通过 Maven 执行 Android Test 时构造函数中出现异常

    我通过 Maven 设置了一个 Android 测试项目 并按照以下说明进行操作here http code google com p maven android plugin wiki AutomateAndroidTestProject
  • 如何解析代码以构建 Java 编译器?

    我需要写一个编译器 这是大学的家庭作业 老师告诉我们 我们可以使用任何我们想要的API来进行代码的解析 只要它是好的 这样我们就可以更加关注我们将生成的 JVM 所以是的 我将用 Java 编写一个编译器来生成 Java 你知道有什么好的A
  • 快速播放活动 UITableView 单元格中的视频

    目标 我正在尝试在完全可见的单元格 可能是 2 3 或 1 中播放视频 并且应该以不可见的方式停止cell 我在用UITableview with AVPlayer 我的桌面视图充满了视频列表 目前我正在使用捆绑包中的视频 我使用了下面的代
  • Sybase 令牌数据流长度不正确

    将二进制文件保存到图像列时出现以下错误 org springframework jdbc UncategorizedSQLException PreparedStatementCallback SQL 的未分类 SQLException 插
  • 如何将 DataSnap 客户端连接定向到各种 DS Server?

    我有一个相当大的 DataSnap 服务器 它将 24 7 运行 它将替代当前运行的 MIDAS COM 服务器 现在我面临的问题是如何更新该服务器而不必强制断开所有连接的客户端 使用当前的 midas 服务器 顺便说一下 没有大量的流量可
  • 将某些工作表从 Excel 工作簿导出为 PDF

    我正在编写一个 VBA 代码 将 Excel 中的一些工作表导出到同一个 PDF 我的 Excel 文件中有几个图表工作表 每个图表工作表的名称都以 name Chart 结尾 我想将名称以图表结尾的所有工作表导出到一个 PDF 文件 这是
  • 在 C/C++ 中获取大随机数

    标准rand 函数给出的数字对我来说不够大 我需要unsigned long long那些 我们如何获得非常大的随机数 我尝试修改一个简单的哈希函数 但它太big 运行时间太长 并且永远不会产生小于 1e5 的数字 你可以轻松地做到这一点s
  • Android 自定义 Widget 膨胀异常

    XML
  • 自定义 li 列表样式,带有很棒的字体图标

    我想知道是否可以利用 font awesome 或任何其他标志性字体 类来创建自定义 li 列表样式类型 我目前正在使用 jQuery 来执行此操作 即 li myClass prepend i class i 然而 当 li li 文本环
  • POST Restful API 的响应代码 400 或 403

    我正在设计一个 POST Restful API 在这种情况下 我必须根据请求正文中提供的元素之一来授权用户 例如 division 1 name MyName address no 123 street abc pincode 22211