Substituir um Anexo

Existem duas formas de substituir um recurso de anexo: colocar o conteúdo de multimédia no Azure Cosmos DB, como no Protocolo AtomPub, ou colocar apenas os metadados de anexo no suporte de dados armazenado externamente.

A primeira consiste em COLOCAR o suporte de dados não processado no payload do corpo para armazená-lo no armazenamento de anexos fornecido na sua conta do Cosmos DB. Para substituir este tipo de anexo, os programadores incluem o anexo não processado (vídeo, áudio, ficheiro, blob, etc.) como o corpo do PUT. Tem de definir dois cabeçalhos: Content-Type e Slug. O cabeçalho Content-Type está definido para o tipo MIME do anexo enquanto o cabeçalho Slug está definido como o nome do anexo.

A segunda forma de substituir um recurso de anexo é colocar as propriedades do recurso de anexo a anotar o tipo e a ligação multimédia do anexo. Ao contrário do primeiro tipo de recurso de anexo, os cabeçalhos Content-Type e Slug não devem ser definidos, uma vez que o suporte de dados não processado não faz parte do payload do pedido.

Pedir

Método URI do pedido Description
PUT https:// {databaseaccount}.documents.azure.com/dbs/{db-id}/colls/{coll-id}/docs/{doc-name}/attachments/{att-name} Tenha em atenção que {databaseaccount} é o nome da conta do Cosmos DB criada na sua subscrição. O valor {db-id} é o nome/id gerado pelo utilizador da base de dados, não o ID gerado pelo sistema (rid). O valor {coll-id} é o nome da coleção na qual o documento está contido. O valor {doc-name} é o nome do documento associado ao anexo. O valor {att-name} é o nome do anexo a substituir.

Cabeçalhos

Veja Common Azure Cosmos DB REST request headers for headers that are used by all Cosmos DB requests (Cabeçalhos de pedido REST do Azure Cosmos DB comuns para cabeçalhos que são utilizados por todos os pedidos do Cosmos DB).

Cabeçalho Necessário Tipo Description
Campo dinâmico Opcional String O nome do anexo. Só é necessário quando o suporte de dados não processado é submetido para o armazenamento de anexos do Cosmos DB. Para obter mais detalhes, veja Protocolo AtomPub.

Corpo

Propriedade Necessário Tipo Description
id Opcional String Não é necessário definir ao anexar suportes de dados não processados. É uma propriedade settable do utilizador. É o nome exclusivo que identifica o anexo, ou seja, nenhum dos dois anexos partilha o mesmo ID. O ID não pode exceder os 255 carateres.
contentType Opcional String Não é necessário definir ao anexar suportes de dados não processados. É uma propriedade settable do utilizador. Anota o tipo de conteúdo do anexo. Ao submeter os bits de anexo como corpo, o Cosmos DB define contentType para o tipo definido no cabeçalho Content-Type .
Media Opcional String Não é necessário definir ao anexar suportes de dados não processados. É a ligação do URL ou o caminho do ficheiro onde reside o anexo.
{  
    "id": "image_id_2",  
    "contentType": "image/jpg",  
    "media": "www.microsoft.com"  
}  
  

Resposta

Cabeçalhos

Veja Common Azure Cosmos DB REST response headers for headers that are returned by all Cosmos DB responses (Cabeçalhos de resposta REST do Azure Cosmos DB comuns para cabeçalhos devolvidos por todas as respostas do Cosmos DB).

Códigos de estado

A tabela seguinte lista os códigos de estado comuns devolvidos por esta operação. Para obter uma lista completa dos códigos de estado, veja Códigos de Estado HTTP.

Código de estado de HTTP Descrição
200 Ok A operação foi efetuada com êxito.
400 Pedido Incorreto O corpo JSON é inválido. Verifique se existem parênteses ou aspas curvas em falta.
404 Não Encontrado O anexo a substituir já não é um recurso, ou seja, o anexo foi eliminado.
409 Conflito O ID fornecido para o anexo foi retirado por um anexo existente.
413 Entidade Demasiado Grande O tamanho do documento no pedido excedeu o tamanho permitido do documento num pedido.

Corpo

Propriedade Descrição
_rid É uma propriedade gerada pelo sistema. O ID do recurso (_rid) é um identificador exclusivo que também é hierárquico de acordo com a pilha de recursos no modelo de recursos. É utilizado internamente para colocação e navegação do recurso de anexo.
_ts É uma propriedade gerada pelo sistema. Especifica o último carimbo de data/hora atualizado do recurso. O valor é um carimbo de data/hora.
_self É uma propriedade gerada pelo sistema. É o URI endereçável exclusivo para o recurso.
_etag É uma propriedade gerada pelo sistema que especifica a etag de recursos necessária para o controlo de simultaneidade otimista.
{  
    "id": "image_id_2",  
    "contentType": "image/jpg",  
    "media": "www.microsoft.com",  
    "_rid": "Sl8fALN4sw4CAAAAAAAAAOnTcEc=",  
    "_ts": 1449606442,  
    "_self": "dbs\/Sl8fAA==\/colls\/Sl8fALN4sw4=\/docs\/Sl8fALN4sw4CAAAAAAAAAA==\/attachments\/Sl8fALN4sw4CAAAAAAAAAOnTcEc=",  
    "_etag": "\"0600abc2-0000-0000-0000-56673d2a0000\""  
}  
  

Exemplo

PUT https://contosomarketing.documents.azure.com/dbs/volcanodb/colls/volcano1/docs/c3bb1fef-fcb1-56e3-0389-f88583c3ce0d/attachments/image_id HTTP/1.1  
x-ms-session-token: 19  
x-ms-date: Tue, 08 Dec 2015 20:27:23 GMT  
authorization: type%3dmaster%26ver%3d1.0%26sig%3dKQWBkCCXyJ66fwBe9%2b%2b7oN7CSlIkMMyFEgimGDPawCs%3d  
Cache-Control: no-cache  
User-Agent: contoso/1.0  
x-ms-version: 2015-08-06  
Accept: application/json  
Host: contosomarketing.documents.azure.com  
Cookie: x-ms-session-token=19  
Content-Length: 281  
Expect: 100-continue  
  
{  
    "id": "image_id_2",  
    "contentType": "image/jpg",  
    "media": "www.microsoft.com"  
}  
  
HTTP/1.1 200 Ok  
Cache-Control: no-store, no-cache  
Pragma: no-cache  
Content-Type: application/json  
Content-Location: https://contosomarketing.documents.azure.com/dbs/volcanodb/colls/volcano1/docs/c3bb1fef-fcb1-56e3-0389-f88583c3ce0d/attachments/image_id  
Server: Microsoft-HTTPAPI/2.0  
Strict-Transport-Security: max-age=31536000  
x-ms-last-state-change-utc: Sun, 29 Nov 2015 19:20:18.154 GMT  
etag: "0600abc2-0000-0000-0000-56673d2a0000"  
x-ms-resource-quota: documentSize=10240;documentsSize=10485760;collectionSize=10485760;  
x-ms-resource-usage: documentSize=0;documentsSize=289;collectionSize=367;  
x-ms-schemaversion: 1.1  
x-ms-alt-content-path: dbs/volcanodb/colls/volcano1/docs/c3bb1fef-fcb1-56e3-0389-f88583c3ce0d  
x-ms-content-path: Sl8fALN4sw4CAAAAAAAAAA==  
x-ms-quorum-acked-lsn: 19  
x-ms-session-token: 20  
x-ms-current-write-quorum: 3  
x-ms-current-replica-set-size: 4  
x-ms-request-charge: 9.9  
x-ms-serviceversion: version=1.5.57.3  
x-ms-activity-id: 8b8be54a-3c7e-4484-9f65-3a3d778347cc  
Set-Cookie: x-ms-session-token=20; Domain=contosomarketing.documents.azure.com; Path=/dbs/volcanodb/colls/volcano1  
x-ms-gatewayversion: version=1.5.57.3  
Date: Tue, 08 Dec 2015 20:27:24 GMT  
Content-Length: 299  
  
{  
    "id": "image_id_2",  
    "contentType": "image/jpg",  
    "media": "www.microsoft.com",  
    "_rid": "Sl8fALN4sw4CAAAAAAAAAOnTcEc=",  
    "_ts": 1449606442,  
    "_self": "dbs\/Sl8fAA==\/colls\/Sl8fALN4sw4=\/docs\/Sl8fALN4sw4CAAAAAAAAAA==\/attachments\/Sl8fALN4sw4CAAAAAAAAAOnTcEc=",  
    "_etag": "\"0600abc2-0000-0000-0000-56673d2a0000\""  
}  
  

Consulte também