Realización de transacciones de grupo de entidades
Table service admite transacciones por lotes en entidades que están en la misma tabla y pertenecen al mismo grupo de particiones. Se admiten varias operaciones de entidad de inserción, actualizar entidad, entidad de mezcla, eliminar entidad, insertar o reemplazar y operaciones de entidad de inserción o combinación dentro de una sola transacción.
Requisitos para las transacciones del grupo de entidades
Una transacción con grupos de entidades debe cumplir los requisitos siguientes:
Todas las entidades sujetas a operaciones como parte de la transacción deben tener el mismo valor
PartitionKey
.Una entidad solo puede aparecer una vez en la transacción, y solo se puede realizar una operación en ella.
La transacción puede incluir como máximo 100 entidades y su carga total puede no tener más de 4 MiB de tamaño.
Todas las entidades están sujetas a las limitaciones descritas en Descripción del modelo de datos de Table Service.
Compatibilidad del servicio Tabla para solicitudes por lotes OData
La semántica de las transacciones del grupo de entidades se define mediante la especificación del protocolo OData. La especificación OData define los siguientes conceptos para solicitudes de lotes:
Un conjunto de cambios es un grupo de una o varias operaciones de inserción, actualización o eliminación.
Un lote es un contenedor de operaciones, incluyendo uno o varios conjuntos de cambios y operaciones de consulta.
Table service admite un subconjunto de funcionalidad definido por la especificación OData:
- Table service solo admite un único conjunto de cambios en un lote. El conjunto de cambios puede incluir varias operaciones de inserción, actualización y eliminación. Si un lote incluye más de un conjunto de cambios, el servicio procesará el primero de ellos, y los conjuntos adicionales serán rechazados con el código de estado 400 (Solicitud incorrecta).
Importante
No se admiten varias operaciones en una sola entidad dentro de un conjunto de cambios.
Tenga en cuenta que no se permite una operación de consulta en un lote que contenga operaciones de inserción, actualización o eliminación; se debe enviar de forma individual en el lote.
Las operaciones dentro de un conjunto de cambios se procesan de forma atómica; es decir, o todas las operaciones del conjunto de cambios se realizan correctamente o el lote completo produce un error. Las operaciones se procesan en el orden en que se especifican en el conjunto de cambios.
Table service no admite operaciones de vinculación en un conjunto de cambios.
El servicio Tabla admite un máximo de 100 operaciones en un conjunto de cambios.
Transacciones con grupos de entidades a través de REST
En las secciones siguientes se describe cómo construir una solicitud por lotes y cómo interpretar la respuesta por lotes, e incluye ejemplos de cada una de las operaciones.
Sintaxis de la solicitud por lotes
Para realizar una solicitud por lotes a través de REST, especifique la $batch
opción en el URI de solicitud. Por ejemplo:
https://myaccount.table.core.windows.net/$batch
Observe que el URI de solicitud no incluye el nombre de la tabla.
Se envía una solicitud por lotes al servidor con una única directiva POST. Esta solicitud debe incluir el encabezado x-ms-version
; el valor del encabezado debe establecerse en 2009-04-14
o una versión más reciente.
La carga XML es un mensaje MIME de varias partes que contiene el lote y el conjunto de cambios. La carga incluye dos límites MIME:
Un límite de lote engloba el conjunto de cambios.
Un límite de conjunto de cambios separa las operaciones de inserción, actualización y eliminación individuales del lote.
Una solicitud individual del conjunto de cambios es idéntica a una solicitud que se realice cuando esa operación se llama a sí misma. Por ejemplo:
Para especificar el encabezado
If-Match
en una operación de actualización, combinación o eliminación, incluya el encabezado del conjunto de encabezados de solicitud para la operación correspondiente en el conjunto de cambios.Para especificar el formato de carga (JSON o ATOM) para cada operación del conjunto de cambios, incluya los encabezados ,
Accept
Version
yDataServiceVersion
adecuadosContent-Type
, como se explica en detalles en Formato de carga para las operaciones de Table Service.Para suprimir el eco de contenido de respuesta para la entidad de inserción, especifique el
Prefer
encabezado con elreturn-no-content
valor de cada operación de inserción del conjunto de cambios. Para obtener más información sobre el encabezado, consulte Resumen de laPrefer
funcionalidad de Table Service.
Solicitud de ejemplo para las operaciones de inserción, actualización y eliminación
En los ejemplos siguientes se muestran solicitudes por lotes que contienen dos operaciones insertar entidad y una operación de entidad de mezcla . En estos ejemplos, dado que no estamos interesados en la carga de eco en la respuesta de las operaciones de inserción, se incluye el Prefer:``return-no-content
encabezado .
Nota:
JSON es el formato de carga recomendado y es el único formato admitido para las versiones 2015-12-11 y posteriores.
JSON (versiones 2013-08-15 y posteriores)
En el ejemplo siguiente se muestra una solicitud por lotes con una carga 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
Fuente Atom (versiones anteriores a 2015-12-11)
En el ejemplo siguiente se muestra una solicitud por lotes con una carga de Atom.
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—
Solicitud de ejemplo para consultas
En los ejemplos siguientes se muestra una solicitud por lotes para una consulta. Tenga en cuenta que solo se puede incluir una consulta en el conjunto de cambios.
Nota:
JSON es el formato de carga recomendado y es el único formato admitido para las versiones 2015-12-11 y posteriores.
JSON (versiones 2013-08-15 y posteriores)
En el ejemplo siguiente se muestra una solicitud por lotes con una carga 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
Fuente Atom (versiones anteriores a 2015-12-11)
En el ejemplo siguiente se muestra una solicitud por lotes con una carga de Atom.
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—
Sintaxis de la respuesta por lotes
La respuesta devuelve un código de estado general para la solicitud por lotes, así como códigos de estado individuales y fragmentos de resultados para cada operación del conjunto de cambios. La respuesta es un mensaje MIME de varias partes que incluye un límite de lote y un límite de conjunto de cambios.
El servicio Tabla devuelve un código de estado para la solicitud por lotes completa, y uno o varios códigos de estado para las operaciones del conjunto de cambios, dependiendo de si se realizaron correctamente o no.
Suponiendo que la solicitud por lotes se ha autorizado correctamente y que table service ha recibido correctamente, la solicitud por lotes devuelve el código de estado 202 (aceptado), incluso si se produce un error en una de las operaciones del conjunto de cambios. Si la propia solicitud por lotes produce un error, lo hará antes de que se ejecute ninguna operación del conjunto de cambios. Por ejemplo, la solicitud por lotes puede producir un error debido a un error de autorización, en cuyo caso el código de estado indicará ese error.
Las operaciones dentro de un conjunto de cambios se procesan de forma atómica; es decir, o todas las operaciones del conjunto de cambios se realizan correctamente o el lote completo produce un error. El servicio Tabla continúa procesando las operaciones del conjunto de cambios hasta que una produzca un error. En ese caso, todas las operaciones anteriores del lote se revierten. Además, las transacciones con grupos de entidades se ejecutan con aislamiento de instantánea.
El código de estado de una operación individual de un conjunto de cambios aparece en la respuesta del conjunto de cambios. Cuando una operación individual genera un error, la respuesta para el conjunto de cambios indica el código de estado 400 (Bad Request
). La información adicional sobre el error incluida en la respuesta indica la operación que produjo el error devolviendo el índice de esa operación. El índice es el número de secuencia del comando en la carga.
Para obtener un ejemplo, vea la respuesta de error de ejemplo siguiente.
Respuesta de ejemplo para las operaciones de creación, actualización y eliminación
En los ejemplos siguientes se muestran las respuestas para las operaciones por lotes enviadas en las solicitudes de ejemplo mostradas anteriormente.
JSON (versiones 2013-08-15 y posteriores)
En el ejemplo siguiente se muestra una respuesta para una solicitud realizada con una carga 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--
Fuente Atom (versiones anteriores a 2015-12-11)
En el ejemplo siguiente se muestra una respuesta para una solicitud realizada con una carga atom.
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--
Respuesta de ejemplo para consultas
En los ejemplos siguientes se muestran las respuestas para las consultas enviadas en las solicitudes de ejemplo mostradas anteriormente.
JSON (versiones 2013-08-15 y posteriores)
En el ejemplo siguiente se muestra una respuesta para una solicitud realizada con una carga 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--
Fuente Atom (versiones anteriores a 2015-12-11)
En el ejemplo siguiente se muestra una respuesta para una solicitud realizada con una carga atom.
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--
Respuesta de error de ejemplo
En los ejemplos siguientes se muestran respuestas de solicitudes por lotes que contienen una operación que produjo un error. Observe que la respuesta por lotes devuelve el código de estado 202 (Aceptado), pero la operación individual que produjo el error devuelve el código de estado 400 (Solicitud incorrecta). La información adicional sobre el error se incluye en el cuerpo de respuesta para la operación en la que se produjo el error. El elemento code
especifica el código de error del servicio de almacenamiento, mientras que el elemento message
comienza por el índice de la operación que produjo el error, seguido de la cadena del mensaje de error. Para determinar la operación en la que se produjo el error, analice el valor de índice del mensaje. Las operaciones se indizan empezando por cero.
Respuesta de error para la solicitud en formato JSON
En el ejemplo de JSON, observe que la operación que produjo el error era la primera operación del conjunto de cambios. Dentro del par nombre-valor del elemento message
, el mensaje comienza por el número 0
, seguido de la información de error extendida.
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--
Respuesta de error para la solicitud en formato Atom
En el ejemplo de Atom, observe que la operación que produjo el error era la cuarta operación del conjunto de cambios. En el elemento message
, el mensaje comienza por el número 3
, seguido de la información de error extendida.
<message xml:lang="en-US">3:One of the request inputs is not valid.</message>
Esta es la respuesta 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--