其余 API 标准做法

  • 本文关键字:标准 API 其余 rest
  • 更新时间 :
  • 英文 :


对我在开发 其余 API。

我想对我拥有的某些资源发出 POST 请求。 {contextPath}/{apiName}/{someResource} : POST

请求正文涉及一些属性,例如:

{
"property1": "value1",
"property2": "value2",
....
"propertyN": "valueN"
}

请求正文中的一个属性引用持久性对象 在我的数据库中,请求正文中的值是该的主键 持久性对象。我有一个逻辑,我可以验证是否 持久性对象是否存在。如果是这样,我会创建一个新资源 并返回 201 已创建的 HTTP 状态。如果持久性对象不是 找到,我应该发送什么状态代码作为响应?我的第一直觉 是404。但是API的目的是创建一个资源,它是 不可能,因为我的数据库中存在一些持久性对象。因此 我不相信404。

因此我不相信 404。

我也不是 - 404 非常松散地提醒人们注意请求目标,但在这里您想引起对请求正文的注意。

正如T A所指出的,400是一个可以接受的答案。

客户端必须了解任何状态代码的类(如第一个数字所示(,并将无法识别的状态代码视为等效于该类的 x00 状态代码,但收件人不得缓存具有无法识别的状态代码的响应。

如果需要更精确,HTTP 状态代码注册表会记录标准化选项。 我看到的最接近的匹配项是 409 冲突

409(冲突(状态代码指示请求无法 由于与目标的当前状态冲突而完成 资源。

或 422 无法处理的实体

422(无法处理的实体(状态代码表示服务器 了解请求实体的内容类型(因此 415(不支持的媒体类型(状态代码不合适(,并且 请求实体的语法正确(因此为 400(错误请求( 状态代码不合适(,但无法处理包含的 指示。 例如,如果 XML 请求正文包含格式正确(即语法正确(,但 语义错误的 XML 指令。

最新更新