Invoke Client API Reference
runtime.ts
no raiz do projeto.
Abaixo está um exemplo de um arquivo runtime.ts
típico, que cria um cliente
para interagir com actions e loaders do seu site, e de dois apps: VTEX e Linx
Impulse. Todos os Apps podem ser usados da mesma forma, já que exportam um
Manifest
.
getUser
, que retorna um objeto de usuário,
baseado em um id
de usuário enviado.
getUser
é automaticamente
inferido, e o tipo da variável user
é User
. Todos os tipos de parâmetros são
também inferidos, então temos mais confiança para interagir com nossas APIs.
Importante: Isso deve ser usado apenas no Navegador. Tentar importar e usar
o cliente Invoke do arquivo runtime.ts
no servidor resultará em um erro. Para
chamar actions/loaders a partir do servidor, veja o próximo exemplo.
addItem
que adiciona um item a um
carrinho.
Suponha também que já temos um loader chamado cart
, que retorna o carrinho
atual para um usuário, baseado em uma sessão contida nos cookies da requisição:
addItem
, podemos reutilizar o loader cart
para
buscar o carrinho atual e então adicionar o item ao carrinho:
AppContext
exportado por convenção do seu site
app.
uploadFile
, que envia um arquivo para um
destino. A ação recebe uma propriedade file
, que é um objeto de arquivo que
contém os dados do arquivo, e uma propriedade destination
, que é uma string
que especifica o destino para onde o arquivo deve ser enviado.
File
como tipo de propriedade aqui, mas isso cria um
problema:
O objeto File
não é serializável via JSON, que é o que o Invoke usa
internamente. Isso significa que tentar passar um objeto File como propriedade
para uma ação resultará em um erro ao tentar acessar a propriedade file dentro
da sua action.
Para resolver isso, o cliente Invoke oferece uma maneira de fazer upload de
arquivos via uma requisição multipart, que é uma maneira prática de enviar
arquivos para o servidor, usando a API FormData e o tipo de conteúdo
multipart/form-data.
Para usar isso, você só precisa adicionar uma opção multipart: true ao
InvokerRequestInit
do Invoke (que é o segundo argumento para qualquer chamada
de invoke), e o cliente usará automaticamente um protocolo personalizado para
enviar o payload via multipart, tornando possível enviar arquivos para o
servidor.
Podemos agora chamar essa ação a partir do Navegador, usando o cliente invoke
exportado do arquivo runtime.ts:
file
pode ser acessado seguramente na action!
Importante: Quando usando a opção multipart
, o cliente Invoke enviará um
FormData objeto para o servidor, que só suporta arquivos e strings. Isso
significa que qualquer propriedade que seja um número ou um booleano será
convertida para uma string.