哪一个应该验证响应数据?发送方(后端)还是接收方(客户端)?
Which one should validate the response data? Sender(Backend) or Receiver(Client)?
// Data flow
CMS -> DB -> REST API -> Client
我们目前正在构建信息亭系统。 CMS
设置产品的数据,Client
s 从 REST API
.
请求数据
虽然 CMS
和 DB
应该验证 INSERT
、UPDATE
或 DELETE
之前的所有数据,但我们可能会遗漏一些内容。因此可以安全地认为某些数据可能会出错(例如,min_quantity > max_quantity
)。
REST API -> Client
部分,DB
部分的坏数据应该由哪一个处理?团队决定 REST API
应该按原样响应,不进行任何验证或清理,否则将很难调试。而 Client
应该以某种方式处理错误的数据。我很担心这个决定,但我不确定为什么。
如果数据已进入您的数据库,则假定它在进入数据库的过程中已经过验证,确保您随后 return 来自数据库的内容是干净的。
当您向 API 发出获取请求时,端点的目的是获取请求的数据并将其 return 发送给调用者,这应该是它唯一关心的,如果它提供的数据对于客户端来说是错误的,由客户端来决定为什么它是错误的并处理它。
当您的管道在另一个方向运行时(客户端 -> API),您可以执行多个验证步骤以确保数据清洁。您可以在提交时验证前端输入,然后当 API 收到请求时,您可以解析数据以确保它符合您的数据标准。并且您的数据库设计很可能也会给出一些固有的限制。
// Data flow
CMS -> DB -> REST API -> Client
我们目前正在构建信息亭系统。 CMS
设置产品的数据,Client
s 从 REST API
.
虽然 CMS
和 DB
应该验证 INSERT
、UPDATE
或 DELETE
之前的所有数据,但我们可能会遗漏一些内容。因此可以安全地认为某些数据可能会出错(例如,min_quantity > max_quantity
)。
REST API -> Client
部分,DB
部分的坏数据应该由哪一个处理?团队决定 REST API
应该按原样响应,不进行任何验证或清理,否则将很难调试。而 Client
应该以某种方式处理错误的数据。我很担心这个决定,但我不确定为什么。
如果数据已进入您的数据库,则假定它在进入数据库的过程中已经过验证,确保您随后 return 来自数据库的内容是干净的。
当您向 API 发出获取请求时,端点的目的是获取请求的数据并将其 return 发送给调用者,这应该是它唯一关心的,如果它提供的数据对于客户端来说是错误的,由客户端来决定为什么它是错误的并处理它。
当您的管道在另一个方向运行时(客户端 -> API),您可以执行多个验证步骤以确保数据清洁。您可以在提交时验证前端输入,然后当 API 收到请求时,您可以解析数据以确保它符合您的数据标准。并且您的数据库设计很可能也会给出一些固有的限制。