在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"
]
}
}
如果您对Web和移动应用程序使用相同的REST API,那么您将希望仅通过更新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"
}
}
您可以进行可能的修改。Maby使用它时没有error_id。如果是error_details,则将它们循环,如果您找到一个与字段名称相同的键,请将其值作为错误文本放在同一字段中。