【问题标题】:ADO .Net RESTful partial updateADO .Net RESTful 部分更新
【发布时间】:2014-11-24 00:45:00
【问题描述】:

我正在使用一个非常无证的 RESTful ADO .Net 服务。我正在尝试执行部分更新(例如,只需发送已更改的数据)。

我当前的请求如下所示:

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"
}

它的作用是“null”/false/blank 我没有发送的所有内容(状态和其他一些列)。我该如何避免这种情况?

或者我是否会在每次更新之前强制执行 GET 请求以获取当前列,然后更改所有内容?

注意:我以前从未使用过 ADO .Net,也无权访问 ADO .Net 服务来对其进行更改。我只能使用 RESTful 接口。我也不确定这是否是 ADO .Net 的特定实现的问题,或者它是否是标准的。

更新:正如 adrift 建议的那样,此服务不支持 PATCH 方法

【问题讨论】:

    标签: rest ado.net


    【解决方案1】:

    你可以试试看服务是否支持PATCH

    几个扩展超文本传输​​协议 (HTTP) 的应用程序 需要一个特性来做部分资源修改。现有的 HTTP PUT 方法只允许完全替换一个文档。 该提案添加了一个新的 HTTP 方法 PATCH 来修改现有的 HTTP 资源。

    另请参阅 The RESTful Cookbook 中的 this page

    如果服务不支持PATCH,那么(如您所述)您必须首先GET 资源,然后PUT 修改后的值。

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

    【讨论】:

    • 服务器响应“方法不允许”。所以不幸的是 PATCH 不是办法:/。如果 ADO .Net 没有规定此服务器的行为,那是什么? (ADO .Net 似乎相当具体)。或者您是在谈论 REST 作为一个与 ADO 无关的概念?
    • 服务方法是这么写的。使用任何服务器端堆栈(ADO.NET、Node.js、PHP),您可以编写方法来接受PUT 的输入并以这种方式处理它。事实上,PATCH 提案的文档表明这是正确的行为。 ADO.NET 是一种数据访问技术,“开箱即用”并没有实现 Web 服务所需的任何东西。
    • 嗯,这很公平。好吧,如果您想到任何其他可能的解决方案,我很想听听,尽管当前的解决方案有效,但速度很慢(此特定 API 每次 API 调用需要 5 秒以上,因此 GET+PUT 需要 10 秒以上......不适合任何人)
    猜你喜欢
    • 2015-08-21
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 2011-01-27
    • 2023-03-08
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    相关资源
    最近更新 更多