Tablo hizmeti işlemleri için yük biçimi
Tablo hizmeti REST API'si, OData yük biçimleri olarak ATOM ve JSON'u destekler. ATOM protokolü Azure depolama hizmetlerinin tüm sürümleri için destekleniyor olsa da JSON protokolü yalnızca 2013-08-15 ve daha yeni sürümler için desteklenir.
JSON, önerilen yük biçimidir. JSON, 2013-08-15 ve daha yeni sürümler için desteklenir. JSON'ı sürüm 2015-12-11 ve üzeriyle kullanmanız gerekir.
ATOM, 2015-12-11 öncesi sürümler için desteklenir.
Not
Aşağıdaki REST API işlemleri OData API'leri değildir ve şu anda JSON'u desteklemez: Tablo ACL'sini Al, Tablo ACL'sini Ayarla, Tablo Hizmeti Özelliklerini Al ve Tablo Hizmeti Özelliklerini Ayarla.
JSON veya ATOM biçimini belirtmek için ve Accept
üst bilgileri için Content-Type
uygun değerleri belirtin (aşağıda açıklanmıştır). Aşağıdaki kısıtlamalara dikkat edin:
Üst
Content-Type
bilgi, OData yükü içeren tüm istekler için gereklidir.Üst bilgi sağlanmazsa
Accept
, yanıtın içerik türü varsayılan olarak olurapplication/atom+xml
.URI parametresinin
$format
belirtilmesi, OData veri hizmeti sürümü 3.0 olarak ayarlandığında istek üst bilgisindeAccept
belirtilen değeri geçersiz kılar. OData hizmet sürümü hakkında ayrıntılı bilgi için bkz. OData Veri Hizmeti Sürüm Üst Bilgilerini Ayarlama .
Yük biçimini belirtmek için ve Accept
istek üst bilgilerini aşağıdaki tabloya göre ayarlayınContent-Type
:
Yük Biçimi | İçerik Türü Üst Bilgisi | Üst Bilgiyi Kabul Et | Veri Hizmeti Sürümü (REST API Sürümü) | Desteklenen API'ler |
---|---|---|---|---|
Atom |
application/atom+xml |
application/atom+xml |
1.0 (Herhangi bir sürüm) 2.0 (2011-08-18 veya üzeri) 3.0 (2013-08-15 veya üzeri) |
QueryTable'lar Createtable Tabloyu Sil Sorgu Varlıkları Varlık Ekle Varlık Ekle veya Birleştir Varlık Ekleme veya Değiştirme Varlığı Güncelleştir Varlığı Birleştir Varlığı Sil |
JSON |
application/json |
application/json;odata=nometadata application/json;odata=minimalmetadata application/json;odata=fullmetadata Ayrıntılar için aşağıdaki JSON Biçimi bölümüne bakın. |
3.0 (2013-08-15 veya üzeri) | QueryTable'lar Createtable Tabloyu Sil Sorgu Varlıkları Varlık Ekle Varlık Ekle veya Birleştir Varlık Ekleme veya Değiştirme Varlığı Güncelleştir Varlığı Birleştir Varlığı Sil |
XML |
application/xml |
application/xml |
Yok | Tablo ACL'lerini alma Tablo ACL'lerini ayarlama Tablo Hizmeti Özelliklerini Alma Tablo Hizmeti Özelliklerini Ayarlama |
JSON Biçimi (application/json) (Sürüm 2013-08-15 ve üzeri)
OData, yukarıda açıklanan ATOM biçimine benzer şekilde, bu ad-değer çiftleri için genel kurallar tanımlayarak JSON biçimini genişletir. OData, kimlikler, tür ve bağlantılar gibi denetim bilgileri için kurallı ek açıklamalar kümesi tanımlar. JSON biçimi hakkında ayrıntılı bilgi için bkz. JSON tanıtımı.
OData'nın JSON biçimini kullanmanın temel avantajı, yük boyutunu azaltmak için yükün öngörülebilir bölümlerinin atlanabilmesidir. Bu verileri alıcı uçta yeniden yazmak için eksik bağlantıları hesaplamak, bilgileri yazmak ve verileri denetlemek için ifadeler kullanılır. Yükten nelerin atlandığını denetlemek için üst bilginin bir parçası Accept
olarak belirtebileceğiniz üç düzey vardır:
application/json;odata=nometadata
application/json;odata=minimalmetadata
application/json;odata=fullmetadata
Aşağıdaki ODATA ek açıklamaları Azure Tablo hizmeti tarafından desteklenir:
odata.metadata
: Koleksiyon, varlık, ilkel değer veya hizmet belgesi için meta veri URL'si.odata.id
: Genellikle kaynağın URL'si olan varlık kimliği.odata.editlink
: Varlık güncelleştirilebilirse ve odata.id varlığı düzenlemek için kullanılabilecek bir URL'yi temsil etmiyorsa, girişi düzenlemek/güncelleştirmek için kullanılan bağlantı.odata.type
: İçeren nesnenin tür adı.odata.etag
: Varlığın ETag'i.PropertyName@odata.type
, özel özellikler için: Hedeflenen özelliğin tür adı.PropertyName@odata.type
, sistem özellikleri (örneğin,PrimaryKey
,RowKey
veTimestamp
özellikleri) için: Hedeflenen özelliğin tür adı.
Her düzeyde yer alan bilgiler aşağıdaki tabloda özetlenmiştir:
Annotations |
odata=fullmetadata |
odata=minimalmetadata |
odata=nometadata |
---|---|---|---|
odata.metadata |
Yes | Yes | Hayır |
odata.id |
Yes | Hayır | Hayır |
odata.editlink |
Yes | Hayır | Hayır |
odata.type |
Yes | Hayır | Hayır |
odata.etag |
Yes | Hayır | Hayır |
PropertyName@odata.type özel özellikler için |
Yes | Yes | Hayır |
PropertyName@odata.type sistem özellikleri için |
Yes | Hayır | Hayır |
JSON Akışındaki Özellik Türleri
Ek odata.type
açıklama, açık bir özelliğin türünü belirlemek için OData JSON biçiminde kullanılır. Aşağıdaki koşulların tümü karşılandığında bu ek açıklama mevcut olur:
JSON denetim düzeyi, JSON Biçimi bölümünde açıklandığı gibi veya
odata=fullmetadata
olarak ayarlanırodata=minimalmetadata
.özelliği özel bir özelliktir. Azure tablolarında yalnızca
PartitionKey
,RowKey
veTimestamp
özelliklerinin sistem özellikleri olduğunu ve tür bilgilerinin içinde$metadata
bildirildiğini unutmayın. Bu özelliklerin tür ek açıklaması yalnızca denetim düzeyi olarak ayarlandığındaodata=fullmetadata
bulunur. Daha fazla bilgi için bkz. Tablo Hizmeti Veri Modelini Anlama.Özelliğin türü, aşağıdaki tabloda özetlenen tür algılama buluşsal yöntemleri aracılığıyla belirlenemez.
Edm türü | odata.type ek açıklaması gerekiyor | JSON Türü |
---|---|---|
Edm.Binary |
Evet | Dize |
Edm.Boolean |
No | Değişmez Değerler |
Edm.DateTime |
Evet | Dize |
Edm.Double |
No | Sayısal (ondalık ayırıcı içerir) |
Edm.Guid |
Evet | Dize |
Edm.Int32 |
No | Sayısal (Ondalık ayırıcı içermez) |
Edm.Int64 |
Evet | Dize |
Edm.String |
Hayır | Dize |
yok | No | Null |
Tablo hizmeti özellikler için değerleri kalıcı null
yapmaz. Varlık yazarken, odata.type ek açıklamasıyla veya olmadan bir null
değer belirtilebilir ve değeri olan herhangi bir null
özellik, istek bu özelliği içermemiş gibi işlenir. Null
varlıkları sorgularken özellik değerleri hiçbir zaman döndürülmüyor.
Edm.Double için, ve -Infinity
değerleri NaN
Infinity
türü String
kullanılarak JSON'da temsil edilir ve odata.type ek açıklaması gerekir. Tablo hizmeti negatif sürümünü NaN
desteklemez ve JSON biçiminde pozitif ile negatif sıfır (olarak 0.0
değerlendirilir-0.0
) arasında ayrım yapmaz.
Aşağıdaki JSON varlığı, sekiz farklı özellik türünün her biri için bir örnek sağlar:
{
"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"
}
ve RowKey
sistem özellikleri olduğundanPartitionKey
, yani tüm tablo satırlarının bu özellikleri tanımlaması gerektiğinden, tür ek açıklamaları varlıkta görünmez. Bu özellikler türü Edm.String
olarak önceden tanımlanmıştır. Ancak, diğer özellikler özel özelliklerdir ve bu nedenle yukarıdaki tabloda desteklenen temel türlerden birine karşılık gelen tür bilgilerini içerir.
Örnekler:
Aşağıdaki örnek OData girdisi, Azure Tablo depolama alanına varlık ekleme isteği olarak gönderilen JSON biçimini gösterir (ekleme işlemiyle ilgili ayrıntılar için bkz. Varlık Ekleme ):
{
"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",
}
İstemci Azure Tablo depolamadaki bir varlık kümesini sorguladığında, hizmet bir JSON yüküyle yanıt verir (sorgu işlemiyle ilgili ayrıntılar için bkz. Sorgu Varlıkları ). Akış üç bilgi düzeyinden birini içerebilir: meta veri yok, en az meta veri veya tam meta veri. Aşağıdaki örnekler her türü gösterir:
Meta veri yok:
{
"value":[
{
"PartitionKey":"Customer03",
"RowKey":"Name",
"Timestamp":"2013-08-09T18:55:48.3402073Z",
"CustomerSince":"2008-10-01T15:25:05.2852025Z",
}
}
En az meta veri:
{
"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",
}
}
Tam meta veriler:
{
"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",
}
}
OData JSON biçimi hakkında daha fazla bilgi edinmek için [MS-ODATAJSON]: OData Protokolü JSON Biçim Standartları Destek Belgesi ile birlikte OData JSON BiçimiSürüm 4.0 belirtimine bakın.
Atom Biçimi (uygulama/atom+xml) (Yalnızca 2015-12-11'den önceki sürümler)
Atom , akış olarak adlandırılan ilgili bilgi koleksiyonlarını açıklayan XML tabanlı bir belge biçimidir. Akışlar, girdi olarak bilinen bir dizi öğeden oluşur. AtomPub , temsil ettikleri kaynakların kolayca kategorilere ayrılmasını, gruplandırılabilmesini, düzenlenebilmesini ve bulunabilmesini sağlayan girişler ve akışlar için ek biçim yapıları tanımlar. Ancak, Atom yapılandırılmış verilerin akışlarla nasıl kodlandığını tanımlamadığından , OData yapılandırılmış içeriğin OData tabanlı hizmetler tarafından aktarılabilmesi için bir Atom akışında yapılandırılmış verileri temsil etmeye yönelik bir dizi kural tanımlar.
Örneğin, aşağıdaki örnek OData girdisi REST API kullanarak Azure Tablo depolama alanına varlık ekleme isteği aracılığıyla gönderilen Atom biçimini gösterir (ekleme işlemiyle ilgili ayrıntılar için bkz. Varlık Ekleme ):
<?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>
İstemci Tablo depolamadaki bir varlık kümesini sorguladığında, hizmet Atom girdileri koleksiyonu olan bir Atom akışıyla yanıt verir (sorgu işlemiyle ilgili ayrıntılar için bkz. Sorgu Varlıkları ):
<?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>
Atom Akışındaki Özellik Türleri
Özellik veri türleri OData Protokolü Belirtimi tarafından tanımlanır. Belirtim tarafından tanımlanan tüm veri türleri Tablo hizmeti tarafından desteklenmez. Desteklenen veri türleri ve bunların ortak dil çalışma zamanı (CLR) türleriyle nasıl eşlendiği hakkında bilgi için bkz. Tablo Hizmeti Veri Modelini Anlama.
Bir özellik, açık bir veri türüyle veya açık veri türü olmadan belirtilebilir. Tür atlanırsa, özelliği otomatik olarak veri türü Edm.String
olarak oluşturulur.
Bir özellik açık bir türle oluşturulursa, varlığı döndüren bir sorgu Atom akışı içinde bu türü içerir, böylece gerekirse var olan bir özelliğin türünü belirleyebilirsiniz. Bir özelliğin türünü bilmek, bu özellik üzerinde filtreleyen bir sorgu oluştururken önemlidir. Daha fazla bilgi için bkz. Tabloları ve Varlıkları Sorgulama.
Özellikler içinDouble
, , INF
ve -INF
değerleri NaN
Atom'da sayı, pozitif sonsuzluk ve negatif sonsuzluğu göstermek için kullanılır. ve formları Infinity
-Infinity
da kabul edilir. Tablo hizmeti negatif sürümünü NaN
desteklemez. Atom biçiminde pozitif ve negatif sıfır arasında ayrımdır.
Ayrıca Bkz.
OData Veri Hizmeti Sürüm Üst Bilgilerini Ayarlama
Azure Depolama Hizmetleri için sürüm oluşturma
Tablo Hizmeti Kavramları