Каждый ресурс, с которым я сталкивался в Интернете, всегда очень хорошо описывает, что вы можете сделать с операцией GET, как она работает и так далее, но никогда не объясняет POST/PUT/DELETE и, в частности, формат данных, которые вы передаете. тело HTTP (я использую JSON). Он всегда говорит: "Вы можете сделать почтовый запрос и передать соответствующие данные в теле".
Я борюсь с тем, что я могу делать, а что нет. Например, я хочу знать, можно ли обновить одно поле одной записи, просто отправив обновленное значение, а не весь объект.
Есть ли какой-либо документ, в котором четко объясняются возможности и ограничения?
Большое спасибо.
Ответ 1 · Vitek Karas MSFT
Удобная для чтения документация находится здесь: 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-адресе), поэтому вы можете поиграть с ним там.