Criar endpoint para upload de arquivos para o S3, aqui nós devemos usar o Direct Upload do ActiveStorage
wedercm opened this issue · 1 comments
wedercm commented
Criar endpoint para upload de arquivos para o S3, aqui nós devemos usar o Direct Upload do ActiveStorage
wedercm commented
Aqui será criar um upload que retornará uma url assinada para que o client da API possa fazer uploads de arquivos diretamente para o serviço de storage, segue o um diagrama de exemplo:
- Faz a requisição para endpoint (
POST /direct_uploads
) na API que criará umActiveStorage::Blob
e retornará informações relacionados ao ActiveStorage::Blob, comokey
,filename
,signed_id
,url
(url assinada para upload) e outros para que o cliente faça upload do arquivo. - Com a url do serviço de storage, o cliente pode fazer upload do arquivo.
- Client manda requisição para criar ou atualizar recurso (ex:
User
) passando osigned_id
no campo que é "attached
". Por exemplo, criar um usuário com foto, deve enviar uma requisição para oendpoint
de criação do usuário com o seguintebody
:
{
name: 'Nome do usuário',
email: 'mail@example.com',
photo: ${signed_id} // valor recebido no response body do POST /direct_uploads
}
- Api só criará o relacionamento do recurso (
User
) com oattached
(photo) se o arquivo existir no serviço de storage.