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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 12 ноября 2010

Легко читаемая документация здесь: 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 доМясоВы также можете отправить 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), поэтому вы можете поиграть с ним там.

0 голосов
/ 12 ноября 2010

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

...