【问题标题】:Dead simple JSON web service question死的简单 JSON Web 服务问题
【发布时间】:2010-09-03 19:03:39
【问题描述】:

我需要保持客户端状态,我想知道这种方法会出现什么问题。

我想向使用 HTTPS 和基本身份验证的客户端提供一个 URL,他们只会 PUT 和 GET 包含 JSON 的 Blob 文本。在服务器端,我可以在 PUTting 时解析它,看看它在存储之前是否语义正确。

这有什么问题?

【问题讨论】:

    标签: json rest


    【解决方案1】:

    是的,PUT 也可以用于创建。不同之处在于,使用 POST,您通常将数据发送到集合的 URI,而服务器确定最终创建资源的 URI(在“201 created”响应的“location”标头中返回给您)。

    但是,如果客户端可以控制资源的 URI,那么您也可以直接使用 PUT 到所需的资源 URI,而不是到集合的 URI。

    另一种思考方式是,按照惯例,PUT 必须是幂等的,而 POST 则不是。这意味着 PUT 请求是发送一次还是多次发送都没有区别。结果是一样的:第一次创建新实体时,任何额外的 PUT 只会更新实体,但使用相同的数据,所以没有真正改变。

    但是,如果您重新发送 POST 请求(到集合 URI),那么您实际上会在集合中创建多个(尽管相同)条目。这也是为什么您的网络浏览器会询问您是否要重新提交表单(通常是 POST),因为提交一次与多次提交是完全不同的。

    【讨论】:

      【解决方案2】:

      您确定要使用 PUT 而不是 POST 吗?通常,PUT 用于更新数据,POST 用于添加新数据。

      GET 的一个问题是可以在客户端缓存数据。

      除此之外 - 我没有看到任何问题。

      【讨论】:

      • 是的,您可以让他们通过在请求末尾附加一个随机数来解决潜在的缓存问题。即:whatever.com/service.xxx?cacheb=3918373717
      • 或者通过指定适当的缓存头。
      • 我确定我想要 PUT,因为它是一个完整的替代品。
      • PUT也可以用来创建。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 2010-10-21
      相关资源
      最近更新 更多