很高兴在 REST API 中进行验证。无论如何,您都需要验证,并且不要在客户端使用它。在我的例子中,我只是在 API 中有一个约定,一个特殊的 error_id 表示验证错误,并且在 error_details 中,对于在此 PUT 或 POST 调用中有错误的每个字段都有一组错误消息。例如:
{
"error": true,
"error_id": 20301,
"error_message": "Validation failed!",
"error_details": {
"number": [
"Number must not be empty"
],
"ean": [
"Ean must not be empty",
"Ean is not a valid EAN"
]
}
}
如果您将相同的 REST API 用于 Web 和移动应用程序,您将希望能够仅通过更新 API 来更改两者的验证。特别是移动更新需要 24 小时以上才能在商店上发布。
这就是它在移动应用程序中的样子:
PUT 或 POST 的响应用于显示每个字段的错误消息。这是来自使用 React 的 Web 应用程序的相同调用:
这样,所有 REST API 响应代码(如 200 、 404)都具有应有的含义。即使验证失败,PUT 调用也会响应 200。如果调用通过验证,响应将如下所示:
{
"error": false,
"item": {
"id": 1,
"created_at": "2016-08-03 13:58:11",
"updated_at": "2016-11-30 08:55:58",
"deleted_at": null,
"name": "Artikel 1",
"number": "1273673813",
"ean": "12345678912222"
}
}
您可以进行一些可能的修改。可以在没有 error_id 的情况下使用它。如果有 error_details 只需循环它们,如果您找到与字段同名的键,则将其值作为错误文本放入同一字段。