Formát datové části pro operace služby Table Service
Rozhraní REST API služby Table podporuje jako formáty datové části OData ATOM a JSON. Protokol ATOM se sice podporuje ve všech verzích služeb Azure Storage, ale protokol JSON se podporuje jenom pro verzi 2013-08-15 a novější.
Json je doporučený formát datové části. JSON se podporuje pro verzi 2013-08-15 a novější. Musíte použít JSON s verzí 2015-12-11 a novější.
ATOM se podporuje ve verzích starších než 2015-12-11.
Poznámka
Následující operace rozhraní REST API nejsou rozhraníMI OData API a v současné době nepodporují JSON: Získání seznamu ACL tabulky, nastavení seznamu ACL tabulky, získání vlastností služby Table Service a nastavení vlastností služby Table Service.
Pokud chcete zadat formát JSON nebo ATOM, zadejte příslušné hodnoty pro Content-Type
hlavičky a Accept
(popsané níže). Mějte na paměti následující omezení:
Hlavička
Content-Type
je povinná pro všechny požadavky, které obsahují datovou část OData.Pokud hlavičku
Accept
nezadáte, typ obsahu odpovědi se ve výchozím nastavení nastaví naapplication/atom+xml
.Zadání parametru
$format
URI přepíše hodnotu zadanou vAccept
hlavičce požadavku, pokud je verze datové služby OData nastavená na 3.0. Podrobnosti o verzi služby OData najdete v tématu Nastavení hlaviček verze datové služby OData.
Pokud chcete zadat formát datové části, nastavte Content-Type
hlavičky a Accept
žádosti podle následující tabulky:
Formát datové části | Hlavička typu obsahu | Přijmout hlavičku | Verze datové služby (verze rozhraní REST API) | Podporovaná rozhraní API |
---|---|---|---|---|
Atom |
application/atom+xml |
application/atom+xml |
1.0 (libovolná verze) 2.0 (2011-08-18 nebo novější) 3.0 (2013-08-15 nebo novější) |
Tabulky dotazů Createtable Odstranit tabulku Dotazování entit Vložit entity Vložení nebo sloučení entity Vložení nebo nahrazení entity Aktualizace entity Sloučit entitu Odstranit entitu |
JSON |
application/json |
application/json;odata=nometadata application/json;odata=minimalmetadata application/json;odata=fullmetadata Podrobnosti najdete níže v části Formát JSON . |
3.0 (2013-08-15 nebo novější) | Tabulky dotazů Createtable Odstranit tabulku Dotazování entit Vložit entity Vložení nebo sloučení entity Vložení nebo nahrazení entity Aktualizace entity Sloučit entitu Odstranit entitu |
XML |
application/xml |
application/xml |
– | Získání seznamu ACL tabulky Nastavit seznam ACL tabulky Získání vlastností služby Table Service Nastavení vlastností služby Table Service |
Formát JSON (application/json) (verze 2013-08-15 a novější)
OData rozšiřuje formát JSON definováním obecných konvencí pro tyto páry název-hodnota, podobně jako formát ATOM popsaný výše. OData definuje sadu kanonických poznámek pro informace o ovládacích prvků, jako jsou ID, typ a odkazy. Podrobnosti o formátu JSON najdete v tématu Úvod do formátu JSON.
Klíčovou výhodou použití formátu JSON pro OData je, že předvídatelné části datové části je možné vynechat, aby se snížila velikost datové části. K rekonstituci těchto dat na straně příjemce se výrazy používají k výpočtu chybějících odkazů, informací o typech a řízení dat. Pokud chcete určit, co se v datové části vynechá, můžete jako součást hlavičky Accept
zadat tři úrovně:
application/json;odata=nometadata
application/json;odata=minimalmetadata
application/json;odata=fullmetadata
Služba Azure Table podporuje následující poznámky ODATA:
odata.metadata
: Adresa URL metadat pro kolekci, entitu, primitivní hodnotu nebo dokument služby.odata.id
: ID entity, což je obecně adresa URL prostředku.odata.editlink
: Odkaz použitý k úpravě nebo aktualizaci položky, pokud je entita aktualizovatelná a odata.id nepředstavuje adresu URL, kterou lze použít k úpravě entity.odata.type
: Název typu obsahujícího objektu.odata.etag
: Značka ETag entity.PropertyName@odata.type
, pro vlastní vlastnosti: Název typu cílové vlastnosti.PropertyName@odata.type
, pro systémové vlastnosti (tj.PrimaryKey
vlastnosti ,RowKey
aTimestamp
): Název typu cílové vlastnosti.
Informace zahrnuté v jednotlivých úrovních jsou shrnuté v následující tabulce:
Annotations |
odata=fullmetadata |
odata=minimalmetadata |
odata=nometadata |
---|---|---|---|
odata.metadata |
Ano | Ano | Ne |
odata.id |
Ano | Ne | Ne |
odata.editlink |
Yes | No | Ne |
odata.type |
Ano | No | Ne |
odata.etag |
Ano | Ne | Ne |
PropertyName@odata.type pro vlastní vlastnosti |
Ano | Ano | No |
PropertyName@odata.type pro systémové vlastnosti |
Ano | Ne | Ne |
Typy vlastností v informačním kanálu JSON
Poznámka se odata.type
používá ve formátu JSON OData k určení typu otevřené vlastnosti. Tato poznámka je k dispozici, pokud jsou splněny všechny následující podmínky:
Úroveň ovládacího prvku JSON je nastavená na nebo
odata=minimalmetadata
odata=fullmetadata
, jak je popsáno v části Formát JSON .Vlastnost je vlastní vlastnost. Všimněte si, že pro tabulky Azure jsou systémové vlastnosti pouze
PartitionKey
vlastnosti ,RowKey
aTimestamp
a informace o jejich typu jsou deklarovány v$metadata
. Poznámka k typu pro tyto vlastnosti je k dispozici pouze v případě, že je úroveň ovládacího prvku nastavena naodata=fullmetadata
hodnotu . Další informace najdete v tématu Principy datového modelu služby Table Service.Typ vlastnosti nelze určit pomocí heuristiky detekce typů shrnuté v následující tabulce.
Typ Edm | Požadovaná poznámka odata.type | Typ JSON |
---|---|---|
Edm.Binary |
Ano | Řetězec |
Edm.Boolean |
Ne | Literály |
Edm.DateTime |
Ano | Řetězec |
Edm.Double |
Ne | Číselné (obsahuje desetinnou čárku) |
Edm.Guid |
Ano | Řetězec |
Edm.Int32 |
Ne | Číselné (neobsahuje desetinnou čárku) |
Edm.Int64 |
Ano | Řetězec |
Edm.String |
No | Řetězec |
Není k dispozici | Ne | Null |
Služba Table Service neuchovává null
hodnoty vlastností. Při zápisu entity null
může být hodnota zadána s poznámkou odata.type nebo bez a každá vlastnost s null
hodnotou je zpracována, jako by požadavek tuto vlastnost neobsahoval.
Null
Hodnoty vlastností se při dotazování entit nikdy nevrací.
Pro Edm.Double jsou hodnoty NaN
a Infinity
-Infinity
reprezentovány ve formátu JSON pomocí typu String
a vyžaduje se poznámka odata.type. Služba Table Service nepodporuje zápornou verzi objektu NaN
a ve formátu JSON nerozlišuje mezi kladnou a zápornou nulou (považuje -0.0
0.0
se za ).
Následující entita JSON poskytuje příklad pro každý z osmi různých typů vlastností:
{
"PartitionKey":"mypartitionkey",
"RowKey":"myrowkey",
"DateTimeProperty@odata.type":"Edm.DateTime",
"DateTimeProperty":"2013-08-02T17:37:43.9004348Z",
"BoolProperty":false,
"BinaryProperty@odata.type":"Edm.Binary",
"BinaryProperty":"AQIDBA==",
"DoubleProperty":1234.1234,
"GuidProperty@odata.type":"Edm.Guid",
"GuidProperty":"4185404a-5818-48c3-b9be-f217df0dba6f",
"Int32Property":1234,
"Int64Property@odata.type":"Edm.Int64",
"Int64Property":"123456789012",
"StringProperty":"test"
}
Vzhledem k tomu PartitionKey
, že a RowKey
jsou systémové vlastnosti, což znamená, že všechny řádky tabulky musí tyto vlastnosti definovat, jejich poznámka typu se v entitě nezobrazí. Tyto vlastnosti jsou předdefinované jako typ Edm.String
. Ostatní vlastnosti jsou však vlastní vlastnosti, a proto obsahují informace o typu odpovídající jednomu z podporovaných primitivních typů ve výše uvedené tabulce.
Příklady:
Následující ukázková položka OData ukazuje formát JSON odeslaný jako požadavek na vložení entity do služby Azure Table Storage (podrobnosti o operaci vložení najdete v tématu Vložení entity ):
{
"Address":"Mountain View",
"Age":23,
"AmountDue":200.23,
"CustomerCode@odata.type":"Edm.Guid",
"CustomerCode":"c9da6455-213d-42c9-9a79-3e9149a57833",
"CustomerSince@odata.type":"Edm.DateTime",
"CustomerSince":"2008-07-10T00:00:00",
"IsActive":true,
"NumOfOrders@odata.type":"Edm.Int64",
"NumOfOrders":"255",
"PartitionKey":"mypartitionkey",
"RowKey":"myrowkey1",
}
Když se klient dotazuje na sadu entit ve službě Azure Table Storage, služba odpoví datovou částí JSON (podrobnosti o operaci dotazu najdete v tématu Dotazování entit). Informační kanál může obsahovat jednu ze tří úrovní informací: žádná metadata, minimální metadata nebo úplná metadata. Následující příklady ukazují jednotlivé druhy:
Žádná metadata:
{
"value":[
{
"PartitionKey":"Customer03",
"RowKey":"Name",
"Timestamp":"2013-08-09T18:55:48.3402073Z",
"CustomerSince":"2008-10-01T15:25:05.2852025Z",
}
}
Minimální metadata:
{
"odata.metadata":"https://myaccount.table.core.windows.net/$metadata#Customers,
"value":[
{
"PartitionKey":"Customer03",
"RowKey":"Name",
"Timestamp":"2013-08-09T18:55:48.3402073Z",
"CustomerSince@odata.type":"Edm.DateTime",
"CustomerSince":"2008-10-01T15:25:05.2852025Z",
}
}
Úplná metadata:
{
"odata.metadata":"https://myaccount.table.core.windows.net/$metadata#Customers",
"value":[
{
"odata.type":"myaccount.Customers",
"odata.id":"https://myaccount.table.core.windows.net/Customers(PartitionKey='Customer03',RowKey='Name')",
"odata.etag":"W/\"0x5B168C7B6E589D2\"",
"odata.editLink":"Customers(PartitionKey='Customer03',RowKey='Name')",
"PartitionKey":"Customer03,
"RowKey":"Name",
"Timestamp@odata.type":"Edm.DateTime",
"Timestamp":"2013-08-09T18:55:48.3402073Z",
"CustomerSince@odata.type":"Edm.DateTime",
"CustomerSince":"2008-10-01T15:25:05.2852025Z",
}
}
Další informace o formátu OData JSON najdete ve specifikaci formátu OData JSON verze 4.0 ve spojení s dokumentem [MS-ODATAJSON]: Podpora standardů FORMÁTU JSON protokolu OData.
Formát Atom (application/atom+xml) (pouze verze starší než 2015-12-11)
Atom je formát dokumentu založený na jazyce XML, který popisuje kolekce souvisejících informací označovaných jako informační kanály. Informační kanály se skládají z řady položek, které se označují jako položky. AtomPub definuje další konstrukty formátu pro položky a informační kanály, aby prostředky, které představují, mohly být snadno kategorizovány, seskupovány, upravovány a zjištěny. Vzhledem k tomu, že Atom nedefinuje způsob kódování strukturovaných dat pomocí informačních kanálů, OData definuje sadu konvencí pro reprezentaci strukturovaných dat v informačním kanálu Atom, aby bylo možné přenášet strukturovaný obsah službami založenými na OData.
Například následující ukázková položka OData ukazuje formát Atom odeslaný prostřednictvím požadavku na vložení entity do služby Azure Table Storage pomocí rozhraní REST API (podrobnosti o operaci vložení najdete v tématu Vložení entity ):
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="https://www.w3.org/2005/Atom">
<title />
<author>
<name />
</author>
<id />
<content type="application/xml">
<m:properties>
<d:Address>Mountain View</d:Address>
<d:Age m:type="Edm.Int32">23</d:Age>
<d:AmountDue m:type="Edm.Double">200.23</d:AmountDue>
<d:BinaryData m:type="Edm.Binary" m:null="true" />
<d:CustomerCode m:type="Edm.Guid">c9da6455-213d-42c9-9a79-3e9149a57833</d:CustomerCode>
<d:CustomerSince m:type="Edm.DateTime">2008-07-10T00:00:00</d:CustomerSince>
<d:IsActive m:type="Edm.Boolean">true</d:IsActive>
<d:NumOfOrders m:type="Edm.Int64">255</d:NumOfOrders>
<d:PartitionKey>mypartitionkey</d:PartitionKey>
<d:RowKey>myrowkey1</d:RowKey>
</m:properties>
</content>
</entry>
Když se klient dotazuje na sadu entit ve službě Table Storage, služba odpoví informačním kanálem Atom, což je kolekce položek Atom (podrobnosti o operaci dotazu najdete v tématu Dotazování entit ):
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="https://myaccount.table.core.windows.net/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="https://www.w3.org/2005/Atom">
<title type="text">Customers</title>
<id>https://myaccount.table.core.windows.net/Customers</id>
<link rel="self" title="Customers" href="Customers" />
<entry m:etag="W/"0x5B168C7B6E589D2"">
<id>https://myaccount.table.core.windows.net/Customers(PartitionKey='Customer03',RowKey='Name')</id>
<title type="text"></title>
<updated>2008-10-01T15:26:13Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Customers" href="Customers (PartitionKey='Customer03',RowKey='Name')" />
<category term="myaccount.Customers" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:PartitionKey>Customer03</d:PartitionKey>
<d:RowKey>Name</d:RowKey> <d:CustomerSince m:type="Edm.DateTime">2008-10-01T15:25:05.2852025Z</d:CustomerSince>
</m:properties>
</content>
</entry>
</feed>
Typy vlastností v informačním kanálu Atom
Datové typy vlastností jsou definovány specifikací protokolu OData. Služba Table Service nepodporuje všechny datové typy definované ve specifikaci. Informace o podporovaných datových typech a o tom, jak se mapují na typy MODULU CLR (Common Language Runtime), najdete v tématu Vysvětlení datového modelu služby Table Service.
Vlastnost může být zadána s explicitním datovým typem nebo bez. Pokud je typ vynechán, vlastnost se automaticky vytvoří jako datový typ Edm.String
.
Pokud je vlastnost vytvořena s explicitním typem, dotaz, který vrací entitu, zahrne tento typ v informačním kanálu Atom, abyste mohli v případě potřeby určit typ existující vlastnosti. Znalost typu vlastnosti je důležitá při vytváření dotazu, který tuto vlastnost filtruje. Další informace najdete v tématu Dotazování tabulek a entit.
Pro Double
vlastnosti se hodnoty NaN
, INF
a -INF
používají v Atomu k označení čísla, kladného nekonečna a záporného nekonečna. Formuláře Infinity
a -Infinity
jsou také přijímány. Služba Table Service nepodporuje zápornou verzi nástroje NaN
. Ve formátu Atom rozlišuje mezi kladnou a zápornou nulou.
Viz také
Nastavení hlaviček verze datové služby OData
Správa verzí pro služby Azure Storage
Koncepty služby Table service