将 JSON 与传统的表单编码数据发布为提交表单的数据格式
Posted
技术标签:
【中文标题】将 JSON 与传统的表单编码数据发布为提交表单的数据格式【英文标题】:posting JSON vs traditional form encoded data as the data format for submitting a form 【发布时间】:2012-11-12 13:17:52 【问题描述】:将 JSON 与传统的表单编码作为从 html 表单向服务器提交数据的数据格式。 HTML 表单是动态的,用户可以添加新行(例如)并填写数据。有一个论点是在这种情况下使用带有 MVC 框架的表单字段更容易,因为像 Spring MVC 这样的 MVC 框架负责绑定到表单(在动态生成的 HTML 等中生成 id),我们可以在控制器在使用 AJAX 作为表单编码的内容类型发布表单时收集这些值。
我正在考虑使用 JSON,您的看法是什么?
-
使用表单编码格式(传统方式)是更好的选择,还是使用 JSON 作为有效负载?您遇到过哪些利弊?
Web 应用程序是否使用 JSON 作为提交表单的数据格式?
我们目前没有与移动应用程序等进行任何集成,那么 JSON 是否值得使用传统表单字段方法?
感谢您的宝贵时间。
【问题讨论】:
【参考方案1】:1。使用表单字段是更好的选择还是使用 JSON 更好?
你无法比较这个。你可以说,要么是传统的 Submit 更好,要么是 JSON 方式,但你需要做出选择。通过 JSON 提交时,不能发送文件,但需要 AJAX 或类似技术与服务器对话。所以要检查浏览器的兼容性。
2。 Web 应用程序是否使用 JSON 来提交表单?
问题本身是错误的。答案是不,因为大多数表单都是由POST
提交的,并且值是作为序列化发送的,这并不总是意味着 JSON。
3。我们目前没有与移动应用程序等进行任何集成,那么 JSON 是否值得在传统的表单字段方法中使用?
同样,浏览器的兼容性和用户的带宽起着重要作用。如果人们有好的浏览器,那就去吧。
我的建议:
有一套规则和最佳实践可用于设计各种 Web 应用程序。请仔细阅读并处理您的项目。 :)
【讨论】:
使用 JSON 什么时候流量会减少?一个典型的帖子数据可能是name=john&phone=12345
,那将是"name":"john","phone":"12345"
作为JSON,不少于。
很好... JSON 不支持文件附件。让我更新一下! :)
它可以通过使用 base64 编码支持文件附件,传输大小增加 37%。【参考方案2】:
我建议您坚持使用您正在使用的框架的标准格式。在性能、安全性和可靠性方面,开发您的框架的人员通常会比您开发此类基础设施做得更好。
这篇文章Normal form submission vs. JSON对基本表单提交与JSON提交的话题进行了一些讨论。我同意的一点是,当您开始研究复杂的数据结构时,结构化格式而不是平面格式可能会非常有利。也就是说,正如您自己所说,Spring MVC 和其他类似框架负责绑定。对我来说,这是 JSON 比标准表单提交做得更好的一件事。如果框架默认处理它,请坚持使用默认值。不要在不必要的地方增加复杂性。
【讨论】:
【参考方案3】:你有什么特别的理由要发布 JSON 吗?
如果不是,那么我会说默认选择是发布表单数据,因为所有浏览器和所有服务器都原生支持。您可以在没有任何客户端脚本的情况下发布表单数据,并且默认情况下任何服务器实现都会处理它。
【讨论】:
我们不想重新加载页面。数据必须异步 POST'ed。所以它将是 AJAX,但问题是,是使用默认的表单提交方法更好,还是应该使用 JSON 对有效负载进行编码以及采用哪种方式的优缺点。 @voicestreams:那么它在客户端并没有太大的不同,因为所有浏览器都原生支持这两种编码方式,但服务器端的情况保持不变。【参考方案4】:更新。看看http://www.w3.org/TR/html-json-forms/
但是“当心。该规范不再处于积极维护中,HTML 工作组不打算进一步维护它。”。
【讨论】:
【参考方案5】:使用表单字段是更好的选择还是使用 JSON 更好?
您正在将苹果与锤子进行比较。 JSON 是数据格式,而表单是数据源。可以在 HTML 表单字段中发送 JSON 数据,所以这个问题有点奇怪。
Web 应用程序是否使用 JSON 来提交表单?
HTML 表单?没有
我们目前没有与移动应用程序等进行任何集成,那么 JSON 是否值得在传统的表单字段方法中使用?
再次阅读 - 了解您想要使用的技术。这有助于理解它是什么。不要在获得基础知识之前开始实施,否则您会浪费时间“重构”您的项目。从头开始...
【讨论】:
以上是关于将 JSON 与传统的表单编码数据发布为提交表单的数据格式的主要内容,如果未能解决你的问题,请参考以下文章