2014-11-24 64 views
0

我正在使用非常未记录的RESTful ADO .Net服务。我正在尝试执行部分更新(如在刚刚通过已更改的数据中发送)。ADO .Net RESTful部分更新

我现在的要求是这样的:

PUT https://{URL}/JobTypeMs(37294) 
Headers: 
    Accept: application/json 
    Content-Type: application/json 

Body: 
{ 
    "Jobtype_Name" : "Completed 2", 
    "Tenant_Id": "{A Long ID}", 
    "Job_Color_Code": "000000" 
} 

这样做什么,是“空”,我不通过(状态和其他几个列)发送/假/空白一切。我如何避免这种情况?

或者我会被迫在每次更新之前进行GET请求以获取当前列,然后更改所有内容?

注意:我以前从未使用过ADO .Net,因此无法访问ADO .Net服务以对其进行更改。我只能使用RESTful界面。我也不确定这是ADO .Net的特定实现还是标准问题。

UPDATE:作为漂泊建议,这项服务不支持PATCH方法

回答

1

你可以试试,看看服务支持PATCH

扩展超文本传输​​协议的多个应用(HTTP) 需要一个功能来进行部分资源修改。现有的 HTTP PUT方法仅允许完整替换文档。 此建议添加了一种新的HTTP方法PATCH,以修改现有的 HTTP资源。

参见The RESTful Cookbook中的this page

如果该服务不支持PATCH,那么(如您所提到的),您将不得不先修改GET资源,然后PUT修改后的值。

请注意,此服务的行为不依赖于ADO.NET或任何其他技术。任何开发堆栈都可以在服务器上使用,并以相同的方式实现。

+0

服务器回应“方法不允许”。所以不幸的是PATCH不是这样的:/。如果ADO .Net没有规定这个服务器的行为,那是什么? (ADO .Net似乎相当具体)。或者你是否在谈论REST,因为一个概念不与ADO绑定? – Mattisdada 2014-11-24 01:06:48

+0

这是如何写入服务方法的。使用任何服务器端堆栈(ADO.NET,Node.js,PHP),您可以编写该方法来接受“PUT”的输入并以此方式处理。实际上,“PATCH”提案的文档表明这是正确的行为。 ADO.NET是一种数据访问技术,“开箱即用”不会实现Web服务所需的任何功能。 – 2014-11-24 01:10:22

+0

啊,这很公平。那么如果你想到任何其他可能的解决方案,我很乐意听到它,尽管目前的解决方案有效,但它非常慢(这个特定的API每个API调用需要5秒以上,所以GET + PUT需要10秒以上...不适合任何人) – Mattisdada 2014-11-24 05:11:22