我需要持久的客户状态,并且想知道这种方法会出现什么问题。
我想为使用HTTPS和基本身份验证的客户端提供URL,他们只需要PUT并获取包含JSON的Blob文本。在服务器端,我可以在PUTting时解析它,以便在存储之前查看它是否在语义上正确。
这有什么问题?
答案 0 :(得分:2)
是的,PUT也可以用于创建。不同之处在于,对于POST,您通常会将数据发送到集合的URI,服务器会确定最终创建的资源的URI(在“201创建的”响应的“位置”标题中返回给您)。
但是,如果客户端可以控制资源的URI,那么您也可以直接使用PUT到所需的资源URI,而不是集合的URI。
考虑它的另一种方式是按照惯例,PUT必须是幂等的,而POST则不是。这意味着PUT请求是一次发送还是更多次发送没有区别。结果是一样的:第一次创建新实体时,任何额外的PUT只更新实体,但是使用相同的数据,所以没有什么真正改变。
但是,如果您重新发送POST请求(到集合URI),那么您实际上会在集合中创建多个(尽管相同)条目。这也是您的网络浏览器询问您是否要重新提交表单(通常是POST)的原因,因为提交一次与提交多次非常不同。
答案 1 :(得分:0)
您确定要使用PUT而不是POST吗?通常,PUT用于更新数据,POST用于添加新数据。
GET的一个问题是数据可以缓存在客户端。
除此之外 - 我没有看到任何陷阱。