是否有任何资源可以解释有关 WCF 数据服务中的 PUT、POST、DELETE 操作的所有内容?

发布于 2024-10-02 19:36:10 字数 244 浏览 5 评论 0原文

我在互联网上遇到的每一个资源总是很好地描述了 GET 操作可以做什么、它是如何工作的等等,但它从未解释 POST/PUT/DELETE,特别是您传入的数据的格式HTTP 正文(我使用的是 JSON)。它总是说“您可以发出发布请求并在正文中传递适当的数据”。

我正在为我能做什么和不能做什么而苦苦挣扎。例如,我想知道是否可以通过仅发送更新的值而不是整个对象来更新一个条目的一个字段。

有没有文件清楚地解释了可能性和限制?

多谢。

Every single resource I'va come across on Internet always describes very well what you can do with the GET operation, how it works and so on, bu it never explains the POST/PUT/DELETE and particularly the format of the data you pass in the HTTP body (I'm using JSON). It always says "you can make a post request and pass the appropriate data in the body".

I am struggling with what I can do and not. For example I want to know if it is possible to update one field of one entry by just sending the updated value, and not the entire object.

Is there any document that explains clearly the possibilities and limitations?

Thanks a lot.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ペ泪落弦音 2024-10-09 19:36:10

易于阅读的文档位于:http://www.odata.org/developers/protocols

如果如果您想要所有肮脏的细节和严格的语言,您可以阅读此文档: http://msdn.microsoft.com/en-us/library/dd541188(PROT.10).aspx

您可以通过发送 PUT 请求来修改单个属性的值。
例如,如果您向此 URL 发送 GET:

http://services.odata.org/(S(kupqbta5wqnfz2cln1qk052x))/OData/OData.svc/Products(0)/Name

并且您请求 JSON(通过 Accept 标头),响应将是:

{
"d" : {
"Name": "Bread"
}
}

“d”包装器的存在只是为了避免 XSS 攻击,因此不得包含在请求中,但其余部分保持不变,因此如果您随后发送如下所示的 PUT 请求:

PUT http://services.odata.org/(S(kupqbta5wqnfz2cln1qk052x))/OData/OData.svc/Products(0)/Name HTTP/1.1
Host: services.odata.org
Content-Type: application/json
Content-Length: 20

{
"Name": "Meat"
}

它将更新属性 Name 为值 Meat。您还可以将 PUT 发送到值本身,在这种情况下,URL 将以 $value(表示属性的原始值)结尾,如下所示:

PUT http://services.odata.org/(S(kupqbta5wqnfz2cln1qk052x))/OData/OData.svc/Products(0)/Name/$value HTTP/1.1
Host: services.odata.org
Content-Type: text/plain
Content-Length: 4

Meat

请注意,这仅适用于原始属性。
odata.org 上的示例服务允许您进行修改(由 URL 中的会话密钥保护),因此可以在那里使用它。

Easy to read documentation is here: http://www.odata.org/developers/protocols

If you want all the dirty details and a strict language you can read this document: http://msdn.microsoft.com/en-us/library/dd541188(PROT.10).aspx

You can modify a value of a single property by sending a PUT request.
For example if you send a GET to this URL:

http://services.odata.org/(S(kupqbta5wqnfz2cln1qk052x))/OData/OData.svc/Products(0)/Name

And you request JSON (through an Accept header) the response will be:

{
"d" : {
"Name": "Bread"
}
}

The "d" wrapper is there only to avoid XSS attacks so that must not be included in the requests, but the rest stays the same, so if you then send a PUT request like this:

PUT http://services.odata.org/(S(kupqbta5wqnfz2cln1qk052x))/OData/OData.svc/Products(0)/Name HTTP/1.1
Host: services.odata.org
Content-Type: application/json
Content-Length: 20

{
"Name": "Meat"
}

It will update the property Name to value Meat. You can also send a PUT to the value itself, in which case the URL would end with $value (denotes the raw value of the property) like this:

PUT http://services.odata.org/(S(kupqbta5wqnfz2cln1qk052x))/OData/OData.svc/Products(0)/Name/$value HTTP/1.1
Host: services.odata.org
Content-Type: text/plain
Content-Length: 4

Meat

Note that this only works on primitive properties though.
The sample service on the odata.org allows you to make modifications (guarded by the session key in the URL), so can play with it there.

薄荷→糖丶微凉 2024-10-09 19:36:10

Google 获取 HTTP 1.1 规范。

Google for the HTTP 1.1 specification.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文