【问题标题】:Troubleshooting GET vs POSTGET 与 POST 故障排除
【发布时间】:2014-08-02 15:44:43
【问题描述】:

我们的项目中有一个非常基本的混乱。我们有一个 Servlet,一些参数在 Query 字符串中传递给它,它为我们构造一个 JSON 响应。这很好用。但是如果我们在 post 中传递参数,返回给我们的响应是不同的,不同的是返回结果的顺序。

所以逻辑上 - 使用查询参数结果是 1,2,3,4,5 使用后变量,结果是 1,3,4,2,5

我们如何解决这个问题。

【问题讨论】:

  • 在你分享一段代码之前不能说。
  • 您需要展示 (a) 您如何提交数据,以及 (b) 您如何构建响应。此外,如果顺序很重要,请考虑通过参数命名约定强制执行顺序。
  • 实际上数据是使用 EXTJS 小部件提交的。像这样 var proxy = new CQ.Ext.data.HttpProxy( {"url": postProxyUrl,"method": "POST"} ); var updatedSourceStore = new CQ.Ext.data.Store({ proxy: proxy, reader: reader, baseParams:{ cattags:tagString1,headline:tempHeadlineData,typetags:tagString2} }); updatedSourceStore.load();
  • GET 和 POST 是两个完全不同的东西。一个是在给定一组查询参数的情况下检索数据;另一个是在给定特定数据(在 JSON 帖子正文或查询参数中)的情况下创建新资源。我希望希望您从连续 POST 得到的响应每次都不同,因为它不像 GET 那样具有幂等性。
  • 我们从 GET 迁移到 POST 的唯一原因是,有时查询字符串超出了大小限制,因此不返回任何结果。实际上是为了维护每次我们将它作为参数值传入查询字符串时的项目顺序。(标题是逗号分隔的值)

标签: java jsp jakarta-ee servlets


【解决方案1】:

底线是,您不能保证任何订单。您需要根据您想要的顺序命名请求参数并在服务器上对其进行排序。

您可能会发现,通过稍微不同的设计,按特定顺序处理它们的要求就消失了。为什么会有这个要求?

在 JavaRanch 关注 retrieving request Parameters in order 的讨论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-15
    • 2010-11-30
    • 2021-09-11
    • 2012-02-18
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多