用于字段验证的REST API

时间:2016-09-21 07:40:45

标签: java web-services rest validation

我必须创建一些Web服务来验证给定字段的可能值。我正在考虑做类似的事情:

POST /entity/fieldName body { fieldValues }

如果参数无效,POST将返回400(错误请求),否则返回422(不可处理实体)。但是我不太喜欢422响应部分因为它使请求总是返回错误。另一方面,由于我只进行验证,这是一个POST,我不想在服务器上实际创建新资源(即返回200)。是否有另一个更适合此方法的HTTP方法/ API端点?为了它的价值,我将检查<fieldName>的实体字段在给定范围内的值。

2 个答案:

答案 0 :(得分:1)

如果您所做的只是验证,那么我认为您应该通过验证错误发送422,并通过验证成功发送200。 POST并不意味着您必须始终创建新实体。

  

POST方法执行的操作可能不会导致   可以通过URI标识的资源。在这种情况下,要么200   (OK)或204(No Content)是适当的响应状态,具体取决于   关于响应是否包括描述该响应的实体   结果

     

如果已在源服务器上创建资源,则为响应   应该是201(创建)并包含一个描述该实体的实体   请求的状态,并引用新资源和位置   标题(见第14.30节)。

答案 1 :(得分:1)

我更喜欢google's api error response style

所以我的服务发送错误响应为json或xml和400 Bad request错误代码:

{
  "status": "INVALID_REQUEST",
  "type": "ERROR_MSG",
  "data": {
    "request": "/v2/data?age=23d",
    "errors": [
      "age: not a number"
    ]
  },
  "time": -1
}

否则200和相应的消息