Realizar transações de grupo de entidades
O serviço Tabela suporta transações em lote em entidades que estão na mesma tabela e pertencem ao mesmo grupo de partições. As operações Inserir Ou Intercalar Entidade, Entidade de Atualização, Intercalar Entidade, Eliminar Entidade, Inserir ou Substituir e Inserir Ou Intercalar Entidade são suportadas numa única transação.
Requisitos para transações de grupos de entidades
Uma transação de grupo de entidades tem de cumprir os seguintes requisitos:
Todas as entidades sujeitas a operações como parte da transação têm de ter o mesmo
PartitionKey
valor.Uma entidade só pode aparecer uma vez na transação e apenas uma operação pode ser efetuada na mesma.
A transação pode incluir, no máximo, 100 entidades e o seu payload total pode não ter mais de 4 MiB de tamanho.
Todas as entidades estão sujeitas às limitações descritas em Compreender o Modelo de Dados do Serviço de Tabelas.
Suporte do Serviço de Tabelas para Pedidos do OData Batch
A semântica para transações de grupo de entidades é definida pela Especificação do Protocolo OData. A especificação OData define os seguintes conceitos para pedidos em lote:
Um conjunto de alterações é um grupo de uma ou mais operações de inserção, atualização ou eliminação.
Um lote é um contentor de operações, incluindo um ou mais conjuntos de alterações e operações de consulta.
O serviço Tabela suporta um subconjunto da funcionalidade definida pela especificação OData:
- O serviço Tabela suporta apenas um único conjunto de alterações num lote. O conjunto de alterações pode incluir várias operações de inserção, atualização e eliminação. Se um lote incluir mais do que um conjunto de alterações, o primeiro conjunto de alterações será processado pelo serviço e os conjuntos de alterações adicionais serão rejeitados com o código de estado 400 (Pedido Incorreto).
Importante
Não são permitidas várias operações numa única entidade num conjunto de alterações.
Tenha em atenção que uma operação de consulta não é permitida num lote que contenha operações de inserção, atualização ou eliminação; tem de ser submetido de forma singly no lote.
As operações dentro de um conjunto de alterações são processadas atomicamente; ou seja, todas as operações no conjunto de alterações têm êxito ou falham. As operações são processadas pela ordem em que são especificadas no conjunto de alterações.
O serviço Tabela não suporta operações de ligação num conjunto de alterações.
O serviço Tabela suporta um máximo de 100 operações num conjunto de alterações.
Transações de Grupo de Entidades através de REST
As secções seguintes descrevem como construir um pedido em lote e como interpretar a resposta do lote e mostrar exemplos de cada um.
Sintaxe do Pedido do Batch
Para efetuar um pedido em lote através de REST, especifique a opção $batch
no URI do pedido. Por exemplo:
https://myaccount.table.core.windows.net/$batch
Tenha em atenção que o URI do pedido não inclui o nome da tabela.
É enviado um pedido em lote para o servidor com uma única diretiva POST. Este pedido tem de incluir o x-ms-version
cabeçalho; o valor do cabeçalho tem de ser definido como 2009-04-14
ou mais recente.
O payload XML é uma mensagem MIME de várias partes que contém o lote e o conjunto de alterações. O payload inclui dois limites do MIME:
Um limite de lote abrange o conjunto de alterações.
Um limite do conjunto de alterações separa as operações individuais de inserção, atualização e eliminação no lote.
Um pedido individual no conjunto de alterações é idêntico a um pedido feito quando essa operação está a ser chamada por si só. Por exemplo:
Para especificar o
If-Match
cabeçalho numa operação de atualização, intercalação ou eliminação, inclua o cabeçalho no conjunto de cabeçalhos de pedido para a operação adequada no conjunto de alterações.Para especificar o formato de payload (JSON ou ATOM) para cada operação no conjunto de alterações, inclua os cabeçalhos ,
Accept
eVersion
DataServiceVersion
adequadosContent-Type
, conforme explicado em detalhes em Formato de Payload para Operações de Serviço de Tabela.Para suprimir o eco do conteúdo de resposta da Entidade Inserir, especifique o
Prefer
cabeçalho com oreturn-no-content
valor para cada operação de inserção no conjunto de alterações. Para obter mais informações sobre oPrefer
cabeçalho, veja Resumo da Funcionalidade do Serviço de Tabelas.
Pedido de Exemplo para Inserir, Atualizar e Eliminar Operações
Os exemplos seguintes mostram pedidos em lote que contêm duas operações Inserir Entidade e uma operação De Intercalar Entidade . Nestes exemplos, uma vez que não estamos interessados no payload de eco na resposta para as operações de inserção, incluímos o Prefer:``return-no-content
cabeçalho.
Nota
JSON é o formato de payload recomendado e é o único formato suportado para as versões 2015-12-11 e posterior.
JSON (versões 2013-08-15 e posteriores)
O exemplo seguinte mostra um pedido em lote com um payload JSON.
POST https://myaccount.table.core.windows.net/$batch HTTP/1.1
x-ms-version: 2013-08-15
Accept-Charset: UTF-8
DataServiceVersion: 3.0;
MaxDataServiceVersion: 3.0;NetFx
Content-Type: multipart/mixed; boundary=batch_a1e9d677-b28b-435e-a89e-87e6a768a431
x-ms-date: Mon, 14 Oct 2013 18:25:49 GMT
Authorization: SharedKey myaccount:50daR38MtfezvbMdKrGJVN+8sjDSn+AaA=
Host: 127.0.0.1:10002
Content-Length: 1323
Connection: Keep-Alive
--batch_a1e9d677-b28b-435e-a89e-87e6a768a431
Content-Type: multipart/mixed; boundary=changeset_8a28b620-b4bb-458c-a177-0959fb14c977
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
POST https://myaccount.table.core.windows.net/Blogs HTTP/1.1
Content-Type: application/json
Accept: application/json;odata=minimalmetadata
Prefer: return-no-content
DataServiceVersion: 3.0;
{"PartitionKey":"Channel_19", "RowKey":"1", "Rating":9, "Text":".NET..."}
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
POST https://myaccount.table.core.windows.net/Blogs HTTP/1.1
Content-Type: application/json
Accept: application/json;odata=minimalmetadata
Prefer: return-no-content
DataServiceVersion: 3.0;
{"PartitionKey":"Channel_17", "RowKey":"2", "Rating":9, "Text":"Azure..."}
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
MERGE https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_17', RowKey='3') HTTP/1.1
Content-Type: application/json
Accept: application/json;odata=minimalmetadata
DataServiceVersion: 3.0;
{"PartitionKey":"Channel_19", "RowKey":"3", "Rating":9, "Text":"PDC 2008..."}
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977--
--batch_a1e9d677-b28b-435e-a89e-87e6a768a431
Feed Atom (versões anteriores a 2015-12-11)
O exemplo seguinte mostra um pedido em lote com um payload do Átomo.
POST /$batch HTTP/1.1
User-Agent: Microsoft ADO.NET Data Services
x-ms-version: 2013-08-15
x-ms-date: Thu, 30 Aug 2013 20:45:13 GMT
Authorization: SharedKeyLite myaccount:asOEzsCDS7YEe6oi+bx47KMwbXL0lYZCOlR/oc3FReQ=
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 2.0;NetFx
Content-Type: multipart/mixed; boundary=batch_a1e9d677-b28b-435e-a89e-87e6a768a431
Host: MyHostName:10002
Prefer: return-no-content
Content-Length: ###
--batch_a1e9d677-b28b-435e-a89e-87e6a768a431
Content-Type: multipart/mixed; boundary=changeset_8a28b620-b4bb-458c-a177-0959fb14c977
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
POST https://myaccount.table.core.windows.net/Blogs HTTP/1.1
Content-ID: 1
Content-Type: application/atom+xml;type=entry
Content-Length: ###
<?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:PartitionKey>Channel_19</d:PartitionKey>
<d:RowKey>1</d:RowKey>
<d:Rating m:type="Edm.Int32">9</d:Rating>
<d:Text>.NET...</d:Title>
</m:properties>
</content>
</entry>
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
POST https://myaccount.table.core.windows.net/Blogs HTTP/1.1
Content-ID: 2
Content-Type: application/atom+xml;type=entry
Prefer: return-no-content
Content-Length: ###
<?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:PartitionKey>Channel_19</d:PartitionKey>
<d:RowKey>2</d:RowKey>
<d:Rating m:type="Edm.Int32">9</d:Rating>
<d:Text>Azure...</d:Title>
</m:properties>
</content>
</entry>
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
MERGE https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19', RowKey='3') HTTP/1.1
Content-ID: 3
Content-Type: application/atom+xml;type=entry
Content-Length: ###
<?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>https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='3')</id>
<content type="application/xml">
<m:properties>
<d:PartitionKey>Channel_19</d:PartitionKey>
<d:RowKey>3</d:RowKey>
<d:Rating m:type="Edm.Int32">9</d:Rating>
<d:Text>PDC 2008...</d:Title>
</m:properties>
</content>
</entry>
--changeset_8a28b620-b4bb-458c-a177-0959fb14c977--
--batch_a1e9d677-b28b-435e-a89e-87e6a768a431—
Pedido de Exemplo para Consultas
Os exemplos seguintes mostram um pedido em lote para uma consulta. Tenha em atenção que apenas uma única consulta pode ser incluída no conjunto de alterações.
Nota
JSON é o formato de payload recomendado e é o único formato suportado para as versões 2015-12-11 e posterior.
JSON (versões 2013-08-15 e posteriores)
O exemplo seguinte mostra um pedido em lote com um payload JSON.
POST https://myaccount.table.core.windows.net/$batch HTTP/1.1
x-ms-version: 2013-08-15
Accept-Charset: UTF-8
DataServiceVersion: 3.0;
MaxDataServiceVersion: 3.0;NetFx
Content-Type: multipart/mixed; boundary=batch_f351702c-c8c8-48c6-af2c-91b809c651ce
x-ms-date: Mon, 14 Oct 2013 19:03:55 GMT
Authorization: SharedKey testaccount1:y6TxCsXeRiR4l1KqihwRJ05Qb5zBk=
Host: 127.0.0.1:10002
Content-Length: 255
Connection: Keep-Alive
--batch_f351702c-c8c8-48c6-af2c-91b809c651ce
Content-Type: application/http
Content-Transfer-Encoding: binary
GET https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='2') HTTP/1.1
Accept: application/json;odata=minimalmetadata
--batch_f351702c-c8c8-48c6-af2c-91b809c651ce
Feed Atom (versões anteriores a 2015-12-11)
O exemplo seguinte mostra um pedido em lote com um payload do Átomo.
POST /$batch HTTP/1.1
User-Agent: Microsoft ADO.NET Data Services
x-ms-version: 2013-08-15
x-ms-date: Thu, 30 Aug 2013 20:45:13 GMT
Authorization: SharedKeyLite myaccount:asOEzsCDS7YEe6oi+bx47KMwbXL0lYZCOlR/oc3FReQ=
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
Content-Type: multipart/mixed; boundary=batch_f351702c-c8c8-48c6-af2c-91b809c651ce
Content-Length: ###
--batch_f351702c-c8c8-48c6-af2c-91b809c651ce
Content-Type: application/http
Content-Transfer-Encoding: binary
GET https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='2') HTTP/1.1
--batch_f351702c-c8c8-48c6-af2c-91b809c651ce—
Sintaxe de Resposta do Batch
A resposta devolve um código de estado geral para o pedido em lote e códigos de estado individuais e fragmentos de resultados para cada operação no conjunto de alterações. A resposta é uma mensagem MIME de várias partes que inclui um limite de lote e um limite de conjunto de alterações.
O serviço Tabela devolve um código de estado para todo o pedido do batch e um ou mais códigos de estado para as operações no conjunto de alterações, dependendo se foram bem-sucedidos ou falharam.
Partindo do princípio de que o pedido do batch foi devidamente autorizado e foi recebido com êxito pelo serviço Tabela, o pedido do batch devolve o código de estado 202 (Aceite), mesmo que uma das operações no conjunto de alterações falhe. Se o próprio pedido do batch falhar, falha antes de qualquer operação no conjunto de alterações ser executada. Por exemplo, o pedido do batch pode falhar devido a um erro de autorização, caso em que o código de estado indicará essa falha.
As operações num conjunto de alterações são processadas atomicamente; ou seja, todas as operações no lote são bem-sucedidas ou o lote inteiro falha. O serviço Tabela continua a processar operações no conjunto de alterações até que uma falhe. Se uma operação falhar, todas as operações anteriores no lote serão revertidas. Além disso, as transações de grupos de entidades são executadas com isolamento de instantâneos.
O código de estado de uma operação individual dentro de um conjunto de alterações é apresentado na resposta do conjunto de alterações. Quando uma operação individual falha, a resposta para o conjunto de alterações indica o código de estado 400 (Bad Request
). Informações de erro adicionais na resposta indicam que operação falhou ao devolver o índice dessa operação. O índice é o número de sequência do comando no payload.
Por exemplo, veja a resposta de erro de exemplo abaixo.
Resposta de Exemplo para Criar, Atualizar e Eliminar Operações
Os exemplos seguintes mostram as respostas para as operações em lote enviadas nos pedidos de exemplo apresentados acima.
JSON (versões 2013-08-15 e posteriores)
O exemplo seguinte mostra uma resposta para um pedido feito com um payload JSON.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Content-Type: multipart/mixed; boundary=batchresponse_e69b1c6c-62ff-471e-ab88-9a4aeef0a880
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: ed9c96eb-9473-4fd9-abf6-fa4dcf0d6295
x-ms-version: 2013-08-15
X-Content-Type-Options: nosniff
Date: Mon, 14 Oct 2013 18:25:49 GMT
Content-Length: 1647
--batchresponse_e69b1c6c-62ff-471e-ab88-9a4aeef0a880
Content-Type: multipart/mixed; boundary=changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25
--changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 1
X-Content-Type-Options: nosniff
Cache-Control: no-cache
Preference-Applied: return-no-content
DataServiceVersion: 3.0;
Location: https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='1')
DataServiceId: https://myaccount.table.core.windows.net/Blogs (PartitionKey='Channel_19',RowKey='1')
ETag: W/"0x8D101F7E4B662C4"
--changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 2
X-Content-Type-Options: nosniff
Cache-Control: no-cache
Preference-Applied: return-no-content
DataServiceVersion: 3.0;
Location: https://myaccount.table.core.windows.net/Blogs (PartitionKey='Channel_19',RowKey='2')
DataServiceId: https://myaccount.table.core.windows.net/Blogs (PartitionKey='Channel_19',RowKey='2')
ETag: W/"0x8C134F7A4B692D8"
--changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 3
X-Content-Type-Options: nosniff
Cache-Control: no-cache
DataServiceVersion: 1.0;
ETag: W/"0x8A541B7C4D699D7"
--changesetresponse_a6253244-7e21-42a8-a149-479ee9e94a25--
--batchresponse_e69b1c6c-62ff-471e-ab88-9a4aeef0a880--
Feed Atom (versões anteriores a 2015-12-11)
O exemplo seguinte mostra uma resposta para um pedido feito com um payload do Átomo.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: multipart/mixed; boundary=batchresponse_dc0fea8c-ed83-4aa8-ac9b-bf56a2d46dfb
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: b4b49b3e-19a9-4091-a280-da76a09da8d4
Date: Thu, 30 Aug 2013 20:44:09 GMT
334
batchresponse_dc0fea8c-ed83-4aa8-ac9b-bf56a2d46dfb
Content-Type: multipart/mixed; boundary=--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977
--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 1
Cache-Control: no-cache
Preference-Applied: return-no-content
ETag: W/"0x8D101F7E4B662C4"
Location: https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='1')
DataServiceVersion: 3.0;
--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 2
Cache-Control: no-cache
Preference-Applied: return-no-content
ETag: W/"0x8C134F7A4B692D8"
Location: https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='2')
DataServiceVersion: 3.0;
--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
Content-ID: 3
Cache-Control: no-cache
ETag: W/"0x8A541B7C4D699D7"
DataServiceVersion: 3.0;
--changesetresponse_8a28b620-b4bb-458c-a177-0959fb14c977--
--batchresponse_4c637ba4-b2f8-40f8-8856-c2d10d163a83--
Resposta de Exemplo para Consultas
Os exemplos seguintes mostram as respostas para as consultas enviadas nos pedidos de exemplo apresentados acima.
JSON (versões 2013-08-15 e posteriores)
O exemplo seguinte mostra uma resposta para um pedido feito com um payload JSON.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Content-Type: multipart/mixed; boundary=batchresponse_0a568496-fb38-4a83-9984-5908d7f4c63d
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 6f2aafa3-19e9-434c-85f2-d178941c2d4b
x-ms-version: 2013-08-15
X-Content-Type-Options: nosniff
Date: Mon, 14 Oct 2013 19:13:30 GMT
Content-Length: 615
--batchresponse_0a568496-fb38-4a83-9984-5908d7f4c63d
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 200 OK
DataServiceVersion: 3.0;
Content-Type: application/json;odata=minimalmetadata;streaming=true;charset=utf-8
X-Content-Type-Options: nosniff
Cache-Control: no-cache
ETag: W/"0x5B168C7B6E589D2"
{"odata.metadata":" https://myaccount.table.core.windows.net/Blogs/$metadata#Blogs/@Element","PartitionKey":"Channel_19","RowKey":"2","Timestamp":"2013-10-14T18:25:49.8922467Z","Rating":9,"Text":"Azure..."}
--batchresponse_0a568496-fb38-4a83-9984-5908d7f4c63d--
Feed Atom (versões anteriores a 2015-12-11)
O exemplo seguinte mostra uma resposta para um pedido feito com um payload do Átomo.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: multipart/mixed; boundary=batchresponse_4c637ba4-b2f8-40f8-8856-c2d10d163a83
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 9202c4a1-43af-4dc0-baca-aa71f7a7407b
Date: Thu, 30 Aug 2013 20:44:10 GMT
--batchresponse_4c637ba4-b2f8-40f8-8856-c2d10d163a83
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 200 OK
Content-Type: application/atom+xml;charset=utf-8
Cache-Control: no-cache
ETag: W/"0x5B168C7B6E589D2"
DataServiceVersion: 3.0;
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="http://127.0.0.1:10002/testaccount1/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:etag="W/"0x5B168C7B6E589D2"" xmlns="https://www.w3.org/2005/Atom">
<id> https://myaccount.table.core.windows.net/Blogs(PartitionKey='Channel_19',RowKey='1')</id>
<title type="text"></title>
<updated>2013-08-30T20:44:10Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Blogs" href=" Blogs(PartitionKey='Channel_19',RowKey='2')" />
<category term="myaccount.Blogs" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:PartitionKey>Channel_19</d:PartitionKey>
<d:RowKey>2</d:RowKey>
<d:Timestamp m:type="Edm.DateTime">2013-08-30T20:44:09.5789464Z</d:Timestamp>
<d:Text>.Net...</d:RowKey>
<d:Rating m:type="Edm.Int32">9</d:Rating>
</m:properties>
</content>
</entry>
--batchresponse_4c637ba4-b2f8-40f8-8856-c2d10d163a83--
Resposta a Erros de Exemplo
Os exemplos seguintes mostram respostas de pedidos em lote que contêm uma operação que falhou. Tenha em atenção que a resposta do lote devolve o código de estado 202 (Aceite), mas a operação individual que falhou devolve o código de estado 400 (Pedido Incorreto). As informações de erro adicionais estão incluídas no corpo de resposta para a operação falhada. O code
elemento especifica o código de erro do serviço de armazenamento, enquanto que o message
elemento começa com o índice da operação falhada, seguido da cadeia de mensagem de erro. Para determinar que operação falhou, analise o valor do índice da mensagem. As operações são indexadas a partir de zero.
Resposta de Erro para Pedido no Formato JSON
No exemplo JSON, tenha em atenção que a operação que falhou foi a primeira operação no conjunto de alterações.
message
No par nome/valor, a mensagem começa com o numeral 0
, seguido das informações de erro expandidas.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Content-Type: multipart/mixed; boundary=batchresponse_4e1c04af-af2b-4cfc-9e35-7677a5efcfca
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 8abd3c55-a72e-47ba-ae0b-ba43abeb76ae
x-ms-version: 2013-08-15
X-Content-Type-Options: nosniff
Date: Mon, 14 Oct 2013 19:21:58 GMT
Content-Length: 1051
--batchresponse_4e1c04af-af2b-4cfc-9e35-7677a5efcfca
Content-Type: multipart/mixed; boundary=changesetresponse_e2a26601-bba8-4c1a-8a8c-bb66badcbca1
--changesetresponse_e2a26601-bba8-4c1a-8a8c-bb66badcbca1
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 400 Bad Request
Content-ID: 1
X-Content-Type-Options: nosniff
DataServiceVersion: 3.0;
Content-Type: application/json;odata=minimalmetadata;streaming=true;charset=utf-8
{"odata.error":{"code":"OutOfRangeInput","message":{"lang":"en-US","value":"0:One of the request inputs is out of range.\nRequestId:8abd3c55-a72e-47ba-ae0b-ba43abeb76ae\nTime:2013-10-14T19:21:58.0890048Z}}}
--changesetresponse_e2a26601-bba8-4c1a-8a8c-bb66badcbca1--
--batchresponse_4e1c04af-af2b-4cfc-9e35-7677a5efcfca--
Resposta de Erro para Pedido no Formato Atom
No exemplo Atom, tenha em atenção que a operação que falhou foi a quarta operação no conjunto de alterações.
message
No elemento , a mensagem começa com o numeral 3
, seguido das informações de erro expandidas.
<message xml:lang="en-US">3:One of the request inputs is not valid.</message>
Eis a resposta completa:
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: multipart/mixed; boundary=batchresponse_7ab1553a-7dd6-44e7-8107-bf1ea1ab1876
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 45ac953e-a4a5-42ba-9b4d-97bf74a8a32e
Date: Thu, 30 Apr 2009 20:45:13 GMT
6E7
--batchresponse_7ab1553a-7dd6-44e7-8107-bf1ea1ab1876
Content-Type: multipart/mixed; boundary=changesetresponse_6cc856b4-8cb9-41eb-b8d2-bb73475c6cec
--changesetresponse_6cc856b4-8cb9-41eb-b8d2-bb73475c6cec
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 400 Bad Request
Content-ID: 4
Content-Type: application/xml
Cache-Control: no-cache
DataServiceVersion: 1.0;
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code>InvalidInput</code>
<message xml:lang="en-US">3:One of the request inputs is not valid.</message>
</error>
--changesetresponse_6cc856b4-8cb9-41eb-b8d2-bb73475c6cec--
--batchresponse_7ab1553a-7dd6-44e7-8107-bf1ea1ab1876--