Skip to main content

Conexões Rest

Aqui veremos como configurar as conexões rest no projeto.


Vimos que para obter conexões primeiro temos que configurar os ambientes, uma vez que os temos configurados agora precisamos fazer com que nosso projeto nos foneça conexões válidas e não apenas configurações.

O Plasma utiliza uma biblíoteca chamada ohmyfech, uma ferramenta que é fortemente recomendada pela comunidade Nuxt 3 para realização de requisições http.


Composable Api

O projeto conta com alguns composables úteis e um deles é o Api.ts que fornece para o desenvolvedor as conexões de acordo com o ambiente aplicado:

composables/Api.ts
import { $Fetch, $fetch } from 'ohmyfetch';import { UserAuth } from '~~/types/Auth';import Connection from '~~/utils/connection/Connection';const UNAUTHORIZED = 401;export const useApi = () => {  const auth = useCookie<UserAuth>('auth').value;  const { coreApi } = useConnections();  return {    coreApi: generateFetchConfig(coreApi, auth?.token)  };};function generateFetchConfig(connection: Connection, token: string): $Fetch {  return $fetch.create({    baseURL: connection.apiURL,    headers: {      'x-api-key': connection.apiKey,      Accept: 'application/json',      'Content-Type': 'application/json',      Authorization: `Bearer ${token}`    },    async onResponse({ response }) {      if (response.status === UNAUTHORIZED) {        useKeycloak().logout();      }    }  });}

Veja que o código é simples e limpo, apenas com objetivo de retornar uma instância $Fetch com a conexão que é passada em generateFetchConfig e previamente recuperada no composable useConnections. Mais abaixo vemos detalhes do que está implementado:

  • Linha 8: Aqui é obtido informações de autenticação do usuário logado, para em seguida aplicar no header Authorization e x-api-key das instâncias $Fetch de conexão.

  • Linha 9: Conforme configurado em Connections.ts é obtida a configuração necessária para gerar a conexão.

  • Linha 11 à 13: Aqui é feito o retorno de todas as instâncias $Fetch possíveis de acordo com a quantidade de configurações de ambientes feitas. Logo se houver mais de uma conexão rest configurada no composable Connections.rs, o mesmo pode ser desestruturado e usado para retornar tbm aqui, veja em um exemplo com 3 classes de configurações de ambientes:

    const { coreApi, marketplaceApi, solfacilPlusApi } = useConnections();return {    coreApi: generateFetchConfig(coreApi, auth?.token),    marketplaceApi: generateFetchConfig(marketplaceApi, auth?.token),    solfacilPlusApi: generateFetchConfig(solfacilPlusApi, auth?.token),};