Controlo de simultaneidade

Nota

As APIs do Portal de Parceiros da Cloud estão integradas e continuarão a trabalhar no Centro de Parceiros. A transição introduz pequenas alterações. Reveja as alterações listadas na Referência da API do Portal de Parceiros da Cloud para garantir que o código continua a funcionar após a transição para o Centro de Parceiros. As APIs CPP só devem ser utilizadas para produtos existentes que já estavam integrados antes da transição para o Centro de Parceiros; os novos produtos devem utilizar APIs de submissão do Centro de Parceiros.

Todas as chamadas às APIs de publicação do Portal de Parceiros da Cloud têm de especificar explicitamente que estratégia de controlo de simultaneidade deve utilizar. A falha ao fornecer o cabeçalho If-Match resultará numa resposta de erro HTTP 400. Oferecemos duas estratégias para o controlo de simultaneidade.

  • Otimista – o cliente que executa a atualização verifica se os dados foram alterados desde a última vez que leu os dados.
  • O último ganha – o cliente atualiza diretamente os dados, independentemente de outra aplicação os ter modificado desde a última hora de leitura.

Fluxo de trabalho de simultaneidade otimista

Recomendamos que utilize a estratégia de simultaneidade otimista, com o seguinte fluxo de trabalho, para garantir que não são feitas edições inesperadas aos seus recursos.

  1. Obtenha uma entidade com as APIs. A resposta inclui um valor ETag que identifica a versão atualmente armazenada da entidade (no momento da resposta).
  2. No momento da atualização, inclua este mesmo valor ETag no cabeçalho de pedido If-Match obrigatório.
  3. A API compara o valor ETag recebido no pedido com o valor ETag atual da entidade numa transação atómica.
    • Se os valores de ETag forem diferentes, a API devolve uma 412 Precondition Failed resposta HTTP. Este erro indica que outro processo atualizou a entidade desde a última vez que o cliente a obteve ou que o valor ETag especificado no pedido está incorreto.
    • Se os valores de ETag forem os mesmos ou se o cabeçalho If-Match contiver o caráter asterisco universal (*), a API efetua a operação pedida. A operação de API também atualiza o valor ETag armazenado da entidade.

Nota

Especificar o caráter universal (*) no cabeçalho If-Match resulta na API com a estratégia de simultaneidade Last-one-wins. Neste caso, a comparação ETag não ocorre e o recurso é atualizado sem quaisquer verificações.