使用http PUT方法的查询参数-REST API

问题描述

我正在我的http PUT方法中传递请求对象和路径变量以更新记录。 可以将其他数据(例如时间戳)作为查询参数传递给我,该参数要保存在与请求对象相比具有附加字段(例如时间戳)的最终记录中吗?

解决方法

是否可以传递其他数据(例如时间戳)作为查询参数,我想将其保存在与请求对象相比具有附加字段(例如时间戳)的最终记录中?

简短的回答:这可能并不意味着您认为的那样。

可以在PUT请求中使用查询参数吗?绝对。查询参数只是资源标识符的另一部分。

/15f3221f-ee3b-4155-bc75-f80855a9187e/abc
/15f3221f-ee3b-4155-bc75-f80855a9187e?abc

这是两个不同的资源标识符,并且这些机器不会假定它们标识相同的资源,但是所有适用于一个资源的http方法也将适用于另一个资源,并且含义相同。

abc当然没有什么魔术,您可以在那里使用时间戳

/15f3221f-ee3b-4155-bc75-f80855a9187e?1970-01-01

更改时间戳会更改标识符;就通用组件而言,以下两个示例确定了不同资源

/15f3221f-ee3b-4155-bc75-f80855a9187e?1970-01-01
/15f3221f-ee3b-4155-bc75-f80855a9187e?1970-01-02

您可能将它们想象为桌面日历的两个不同页面。修改1970-01-02文档中的约会列表完全不会更改1970-01-01日历。

关于表示的元数据通常会嵌入在表示本身(在HTML文档中为HEAD元素)或HTTP标头中。据我所知,我们没有符合您想要的语义的标准化标头。

所有说明:服务器在解释更新/15f3221f-ee3b-4155-bc75-f80855a9187e?1970-01-02表示的请求方面有很多自由。例如,对该资源的更新也可能会更新许多其他资源的表示形式。

(尽管请记住缓存,但是,我们只能以有限的方式通知通用客户端某些缓存的表示已被请求无效。)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...