【问题标题】:How bad is it to use @POST to retrieve data?使用@POST 检索数据有多糟糕?
【发布时间】:2013-06-18 12:36:44
【问题描述】:

我目前正在使用@POST Web 服务来检索数据。 一开始,我的想法是传递参数映射。然后我的函数,在服务器端,将负责读取地图中所需的参数并返回响应。 这是为了防止在服务器端出现大量几乎相同的功能。

但如果我理解正确,@POST 应该用于创建内容。

所以我的问题是:使用@POST 进行数据检索是一个很大的编程错误吗? 每个用例创建 1 个 Web 服务是否更好,即使数量很多?

谢谢。 罗曼。

【问题讨论】:

  • 这是怎么回事?如果这是您的应用程序所期望的,那就去做吧!
  • 我看不出有什么问题
  • 就纯 REST 而言,这只是一个“错误”,其中 HTTP 动词被分配了您提到的语义。所以,虽然它可能会让 RESTnik 感到困惑,但它对你来说会很好:-)
  • 还不如使用GET修改数据...
  • 所以这在技术上不是问题。这段代码可以正常工作。但是,它将消除使用 HTTP 动词的优势,因此在架构方面不是最佳选择。谢谢

标签: java rest post get


【解决方案1】:

POST 用于表示您正在提交数据。 GET 请求可以加书签,POST 不能。在出现单页 Web 应用程序之前,我们使用 post-redirect-get 来接受数据提交并显示一个可预订的页面。

如果您使用 POST 检索数据,那么 web-caching 不起作用,因为缓存代码不会缓存 POSTS,它期望 POST 意味着它需要使其缓存无效。如果您根据用例将服务拆分并使用 GET,那么您可以使用 Squid 之类的东西缓存响应。

您现在可能不需要实现缓存,但最好保持该选项处于打开状态。让您的服务以合规方式运行意味着您可以利用现有工具和基础架构(这是 REST 的卖点)。

【讨论】:

    【解决方案2】:
    doGet();
    

    由服务器调用(通过 service 方法)以允许 servlet 处理 GET 请求。

    doPost()
    

    由服务器调用(通过 service 方法)以允许 servlet 处理 POST 请求。

    他们没有问题。两者都会处理您的请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-23
      • 2012-01-28
      • 1970-01-01
      • 2010-11-24
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多