在前端或后端验证必填字段的正确方法是什么?

Which is the right approach to validate a mandatory field in front end or back end?

我是后端开发新手。我已经写了 API 来更新用户信息,其请求体是这样的 -

{
   "id": 26,
   "email": "tom.richards@yahoo.com",
   "firstName": "Tommy",
   "lastName": "Richards",
   "photoUrl": null,
   "userAddress": [
        {
           "id": 8,
           "type": "home",
           "addressLine1": "DP Road",
           "addressLine2": "Main Street",
           "city": "Los Angel",
           "state": "CA",
           "country": "USA",
           "postalCode":915890
        },
        {
          "id": 25,
          "type": "office",
          "addressLine1": "Dr Red Road",
          "addressLine2": null,
          "city": "SA",
          "state": "CA",
          "country": "USA",
          "postalCode":918950
       }
    ]
}

理想情况下,应该在前端[网站或Phone]或后端[服务器端]或两侧验证地址类型[在我的情况下是家庭或办公室]?哪个是验证地址类型的好方法?如果我们在后端验证它,这会导致任何性能问题吗?

注- 如果开发者传递任意字符串,DB中会创建类似传递字符串的地址类型。

后端验证它从任何 Web 请求中获得的所有内容是一种很好的方法,因为您无法判断它是来自您的网站还是来自其他来源(甚至可能是恶意攻击)的良好请求。后端必须保护自己并验证它得到的一切。

最重要的是,在某些(如果不是全部)情况下,在前端也进行一些验证是很好的,原因之一是如果您有一个请求,您知道后端将失败- 省去麻烦,在你提出昂贵的请求之前先检查一下

原因 前端验证:在服务器上验证,如果数据无效,用户必须等待响应。

后端验证:确保数据不会被入侵者更改。

Validate @database end : 像 Mongoose 一样提供内置和自定义验证。

根据要求,我们必须在更新用户个人资料之前交叉检查数据。