-
Notifications
You must be signed in to change notification settings - Fork 0
O conceito Promise
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:
{
"success":true,
"data":{
"StorageAPI":{
"send_id":"abcd123",
"timestamp_start":121212333,
"timestamp_end":null,
"send_status_code":206,
"files":[
{
"file_id":"{hash}",
"name":"DOC0025.jpg",
"sha1":"38c34f6453ab1cef08d42618438e6380fac3ed13",
"timestamp_start":123123123,
"timestamp_end":null,
"status_code":202,
"url":null,
"width":null,
"height":null,
"upload_tipo_cod":[
0
]
},
{
"file_id":"{hash}",
"name":"DOC0026.jpg",
"sha1":"asdasd6453ab1cef08d42618438e6380fac3ed13",
"timestamp_start":123123123,
"timestamp_end":321321321,
"status_code":201,
"url":"https://s3.amazonaws.com/{hash}.jpg",
"width":970,
"height":615,
"upload_tipo_cod":[
0
]
},
{
"file_id":"{hash}",
"name":"DOC0027.jpg",
"sha1":"asdasd6453ab1cef08d42618438e6380fac3ed13",
"timestamp_start":123123123,
"timestamp_end":321321321,
"status_code":415,
"url":null,
"width":null,
"height":null,
"upload_tipo_cod":[
0
]
}
]
}
}
}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;
- Home
- O conceito Promise
- Upload com promise
- Consultando a lista de promises
- Consultando o status de uma promise
- Obtendo a lista de todos os documentos de uma referência
- Obtendo a lista de documentos de uma referência pelo tipo de documento
- Obtendo os detalhes de um documento
- Recortando uma imagem
- Rotacionando uma imagem
- Alterando o tipo de um documento
- Removendo um documento