Есть ли какой-либо ресурс, который объясняет все об операции PUT, POST, DELETE в службах данных WCF?

Каждый ресурс, с которым я сталкивался в Интернете, всегда очень хорошо описывает, что вы можете сделать с операцией GET, как она работает и так далее, но никогда не объясняет POST/PUT/DELETE и, в частности, формат данных, которые вы передаете. тело HTTP (я использую JSON). Он всегда говорит: «Вы можете сделать почтовый запрос и передать соответствующие данные в теле».

Я борюсь с тем, что я могу делать, а что нет. Например, я хочу знать, можно ли обновить одно поле одной записи, просто отправив обновленное значение, а не весь объект.

Есть ли какой-либо документ, в котором четко объясняются возможности и ограничения?

Большое спасибо.


person Fabien Warniez    schedule 12.11.2010    source источник


Ответы (2)


Удобная для чтения документация находится здесь: http://www.odata.org/developers/protocols.

Если вам нужны все грязные подробности и строгие формулировки, вы можете прочитать этот документ: http://msdn.microsoft.com/en-us/library/dd541188(PROT.10).aspx

Вы можете изменить значение одного свойства, отправив запрос PUT. Например, если вы отправляете GET на этот URL:

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-адресе), поэтому вы можете поиграть с ним там.

person Vitek Karas MSFT    schedule 12.11.2010

Google для спецификации HTTP 1.1.

person Rob    schedule 12.11.2010