gpt4 book ai didi

json - 如何在服务器端最好地验证JSON

转载 作者:行者123 更新时间:2023-12-03 13:31:16 28 4
gpt4 key购买 nike

在服务器端处理POST,PUT和PATCH请求时,我们经常需要处理一些JSON来执行请求。

显然,我们需要以某种方式验证这些JSON(例如,结构,允许/期望的键和值类型),而且我至少可以看到两种方式:


收到JSON后,请先对JSON进行验证,然后再执行任何操作以完成请求。
照原样处理JSON,开始对其进行处理(例如访问其各种键值),并在执行业务逻辑时尝试不断地对其进行验证,并可能使用一些异常处理来处理时尚数据。


与第二种方法相比,第一种方法似乎更健壮,但可能会更昂贵(时间成本),因为每个请求都将得到验证(并且希望大多数请求都是有效的,因此这种验证是多余的)。

第二种方法可以将强制验证保存在有效请求上,但是将检查混入业务逻辑中可能会出错,甚至有风险。

以上两个中哪一个更好?或者,还有更好的方法吗?

最佳答案

用POST,PUT和PATCH描述的内容听起来像是在实现REST API。根据您的后端平台,您可以使用将JSON映射到非常强大的对象并为您执行验证的库。在JAVA中,可以使用JerseySpringJackson。如果使用的是.NET,则可以使用Json.NET

如果效率是您的目标,并且您希望验证每个请求,那么如果可以使用json2.js,则可以在前端进行评估,这是理想的选择。

关于比较您的方法,这是一个Pro / Cons列表。

方法1:根据要求

优点


业务逻辑完整性得到维护。正如您提到的那样,在处理业务逻辑时尝试进行验证可能会导致无效测试,这些测试实际上可能是有效的,反之亦然,或者验证也可能无意中对业务逻辑造成了负面影响。
正如诺伯特(Norbert)所言,提前发现错误将提高效率。提出的逻辑问题是,如果首先出现错误,为什么要花时间进行处理?
该代码将更加简洁易读。将验证和业务逻辑分开可以使代码更整洁,更易于阅读和维护。


缺点


这可能导致冗余处理,意味着更长的计算时间。


方法2:进行验证

优点


从理论上讲,这是有效的,因为它可以节省流程并同时计算时间。


缺点


实际上,节省的处理时间可以忽略不计(如Norbert所述)。您仍然以任何一种方式进行验证检查。另外,如果发现错误,则浪费了处理时间。
可以包括数据完整性。以这种方式处理时,JSON可能会损坏。
代码不清楚。在阅读业务逻辑时,由于验证逻辑被混入其中,因此发生的情况可能不那么明显。


真正归结为准确性与速度。它们通常具有相反的关系。随着您变得更加准确并验证JSON,您可能不得不牺牲一些速度。实际上,这只是在大数据集中才值得注意,因为如今计算机的速度非常快。鉴于您认为数据在接收时可能有多准确,或者额外的一秒左右是否至关重要,取决于您自己来决定更重要的事情。在某些情况下,这确实很重要(例如,对于股票市场和医疗保健应用而言,毫秒很重要),两者都非常重要。正是在这些情况下,例如,随着精度的提高,您可能必须通过购买性能更高的机器来提高速度。

希望这可以帮助。

关于json - 如何在服务器端最好地验证JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30156407/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com