Skip to content

O conceito Promise

Vinícius Pozzebon edited this page Sep 18, 2017 · 6 revisions

Para que o processo de upload na StorageAPI não degrade o desempenho do front-end, adotamos o conceito de Promise (promessa), onde o front-end, ao disparar um pedido de "upload", recebe da StorageAPI um identificador de "promessa" que já identifica, minimamente, se os arquivos submetidos foram aceitos para processamento.

Com esse identificador da promessa, o front-end pode consultar periodicamente se o "status" da promessa mudou e se o lote de arquivos enviados já foi processado no todo ou em parte.

Estrutura de uma promise

Explicando as posições chave:

  • send_id: identifica a promise;
  • timestamp_start: momento em que a promise foi iniciada no back-end;
  • timestamp_end: momento em que o back-end concluiu a promise;

A posição "send_status_code" retorna o status code que identifica se o lote foi aceito para processamento ou não:

  • 200, caso o lote todo já tenha sido processado;
  • 206, caso algum dos arquivos do lote ainda esteja sendo processado;
  • 40*, em caso de erros de requisição do front-end;
  • 50*, em caso de erro interno no back-end;

Individualmente, cada arquivo remetido também retorna um status code que identifica se o arquivo foi processado com sucesso, se está aguardando processamento ou se foi recusado pela API.

  • 201, em caso de sucesso;
  • 202, caso tenha sido aceito para processamento;
  • 40*, caso o front-end tenha submetido uma requisição inconsistente;
  • 415, caso o formato de arquivo remetido não seja suportado;
  • 50*, caso durante o processamento do arquivo, o back-end tenha encontrado uma exceção não tratada;