超文本表单-超媒体控件中的ETag

时间:2018-12-13 21:36:30

标签: rest hypermedia

考虑我正在将HTML用于我的REST API媒体类型,它可以是JSON,没关系。

HTML有一个很好理解的<form>元素,其中包含一个action和一个method。但是,如果我要发布到资源位置,并且要防止并发更新,则客户端将需要提供If-Match。

不能使用GET或HEAD检索我发布的URL,因此客户端无法获取最新的ETag。

我注意到HTML和JSON Ion超文本媒体类型都不支持表单上的ifmatchetag

这将使客户端不再需要先尝试然后失败,然后再进行GET然后再试一次,或者首先获取另一个资源,或者知道并记住从另一个位置保留ETag。

不确定这是我的疏忽还是发疯,将其发布到无法查看的资源位置。

发布到可见的URL的问题是明显的额外代码,它们确实确实支持这种情况。

然后,如果发布到存在其他功能的URL并允许发布其他内容,则必须区分传入数据的“形状”,以便路由到正确的处理代码。

如果使用预先填充的ifmatch形式,似乎整个事情要简单得多。

所以,问题是

我应该将我的超媒体控件(窗体)设计为具有预先填充的ifmatch元素吗?

1 个答案:

答案 0 :(得分:2)

在输入此内容并使用HTML进行框架化时,我做了一些Google搜索,实际上找到了有用的资源。

http://amundsen.com/examples/put-delete-forms/

迈克建议以HTML格式提出if-matchif-not-match