HTTP PUT 方法

HTTP作用于完全替换 OSLC 资源。 PUT 方法不仅更新字面值特性,还更新本地资源特性,并且删除所有未包括在请求中的本地资源特性。

使用 PUT 方法替换 OSLC 资源时,以下规则适用:

  • 请求文档中指定的所有字面值属性都将更新。 请求中未指定的任何字面值特性都不会显式受影响。 但是,这种特性可能会隐式受附加到资源的业务逻辑影响。 当您使用 PATCH 方法来更新资源时,此规则相同。
  • 所有本地资源特性都将替换为请求中的相应特性值。 如果资源特性未包括在请求中,那么相应的资源将被删除。 如果包括资源属性,那么其值将替换服务器中的值。
  • 无法显式更新引用资源。 但是,您可以更新引用资源的特性,并且这些特性遵循字面值特性的更新模型。 当您使用 PATCH 方法来更新资源时,此规则相同。

在下列示例中,工作任务资源有一个字面值特性 taskname 和一个资源特性 partsparts 特性指向本地资源部件,并且与两个部件记录相关联。 如果 PUT 请求包含 taskname 特性,但未包含 parts 特性,那么任务名称将会更新,并且部件数据将被删除。

示例:更新字面值属性

以下方法更新字面值属性 taskname
PUT http://yourserver/oslc/so/WorkTask/123

{
   "dcterms:taskname": "Check-out Leaking – Modified for Test"
}
如果成功处理请求,那么 OSLC 客户机将接收到以下响应:
204 No Content
ETag: 1376596202470

任务名称已更改为 Check-out Leaking – Modified for Test。 由于此方法中未包含 parts 数据,因此部件记录将被删除。

示例:更新本地资源属性

以下方法更新资源属性 parts
PUT http://yourserver/oslc/so/WorkTask/123

{
   “spi:parts”: [
	{
		 “spi:partsid": "0000000067",
 "spi:quantity": 5
            }
]
}
如果成功处理请求,那么 OSLC 客户机将接收到以下响应:
204 No Content
ETag: 1376596202470

将搜索标识为 0000000067 的部件记录。 如果这种部件记录存在,那么它将会更新。 如果未找到匹配项,将创建新的部件记录。 此工作任务资源的所有其他部件数据都将被删除。 由于此方法中未包含 taskname 特性,因此任务名称未包含在请求中,并且值不受影响。