Dominando a integração de API no React com Axios | Integre seu aplicativo com o backend | Faisal Memon | Skillshare
Pesquisar

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Dominando a integração de API no React com Axios | Integre seu aplicativo com o backend

teacher avatar Faisal Memon, Product | Engineer | Entrepreneur

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Introdução ao curso

      2:48

    • 2.

      Configurando o React Project

      8:27

    • 3.

      Configurando nosso IDE - Código do Visual Studio

      1:46

    • 4.

      Primeiros passos

      8:24

    • 5.

      Integrando APIs no React

      16:01

    • 6.

      Gerenciando eficientemente estados de carga e tratamento de erros

      12:02

    • 7.

      Simplificando chamadas de API no React com o Axios

      8:48

    • 8.

      Executando várias solicitações GET simultaneamente

      5:00

    • 9.

      Enviando dados com solicitações POST no Axios

      7:50

    • 10.

      Otimizando a segurança de API com Interceptors Axios

      6:07

    • 11.

      Construindo instâncias personalizadas do Axios para melhor controle

      9:05

    • 12.

      Supercarregando instâncias personalizadas do Axios com interceptores

      9:23

    • 13.

      Conclusão do curso

      1:41

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

36

Estudantes

--

Projeto

Sobre este curso

Desbloquear o potencial completo do React dominando a integração de API com o Axios neste curso prático, "Dominando a integração de API no React com Axios". Quer você esteja construindo aplicativos web dinâmicos ou aprimorando projetos existentes, este curso irá equipar você com as habilidades essenciais para buscar e gerenciar dados de forma eficaz no React.

Neste curso, você vai explorar:

  • Trabalhando com APIs no React: aprenda como integrar APIs para buscar e exibir dados dinamicamente em seus aplicativos React.
  • Lidando com estados de carregamento e erros: entenda como melhorar a experiência do usuário gerenciando indicadores de carregamento e manipulando erros com graça.
  • Fazendo chamadas de API com o Axios: mergulhe no Axios, um cliente HTTP popular baseado em promessas, para simplificar suas solicitações de API.
  • Executando várias solicitações simultaneamente: aprenda como lidar com várias solicitações de API de forma eficiente para aumentar o desempenho do aplicativo.
  • Envio de solicitações POST: entenda como enviar dados para servidores e atualizar sistemas de back-end com solicitações POST.
  • Usando interceptadores no Axios: obtenha insights sobre a interceptação de solicitações e respostas para adicionar lógica personalizada, como autenticação ou login.
  • Criando instâncias personalizadas do Axios: personalize sua instância do Axios para simplificar as interações de API em seus aplicativos.

Ao final deste curso, você terá a confiança para integrar e gerenciar APIs em seus projetos do React, tornando seus aplicativos mais interativos e fáceis de usar.

Para quem é este curso?

  • Desenvolvedores do React que buscam aprimorar suas habilidades de integração de API.
  • Desenvolvedores web com o objetivo de construir aplicativos dinâmicos e orientados por dados.
  • Qualquer pessoa interessada em melhorar seu kit de ferramentas de desenvolvimento de front-end com técnicas práticas e reais de manipulação de API.

Embarque nesta jornada e eleve suas habilidades de desenvolvimento do React com integração eficiente de API. VAMOS COMEÇAR!

Conheça seu professor

Teacher Profile Image

Faisal Memon

Product | Engineer | Entrepreneur

Professor

Hey - this is Faisal and thanks for being here.

I have over 12 years of experience working as a Product Manager Founder/CEO Engineer in Mobile and App development industry. I have been building global products being used by millions of users across the globe since the beginning of my career.

Currently I am heading Product at one of the fast-paced startup in India and enjoying every moment of it. Prior to his, I built out couple of startups which had over half a million users across the globe, raised funding from Google other investors and was part of Google Launchpad Accelerator. I have experience of building products from scratch and scaling to global users.

I am here on Skillshare to share my knowledge with seekers and help them grow personally and professional... Visualizar o perfil completo

Level: All Levels

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Introdução ao curso: Bem-vindo aos cursos em que vamos dominar a integração de API no react Meu nome é Fassel e estou entusiasmado em guiá-lo pelo empolgante mundo da integração de APIs no mundo do react Sou um empreendedor apaixonado por ensinar on-line e, em minha carreira, criei muitos aplicativos robustos que foram usados por milhões de usuários em todo o mundo, e estou aqui para compartilhar minha experiência e conhecimento com todos vocês. No mundo dinâmico de hoje, integração de APIs é um dos aspectos importantes quando se trata de criar aplicativos escaláveis de nível de produção Cada aplicativo web que você vê tem um front-end e um back-end Se você estiver criando um front-end, é fundamental que você entenda como integrar seu aplicativo e se comunicar com o servidor de back-end Ao longo de nossa jornada, mergulharemos profundamente na integração da API com o react. Usaremos o eixo para o mesmo. Falando sobre o curso, este curso aborda muitos aspectos da integração de API e da realização de chamadas de API. Por exemplo, sempre que você estiver fazendo uma chamada de API, é provável que você não receba uma resposta imediata. Então, como você pode gerenciar o carregamento para melhorar a experiência do usuário e como gerenciar os estados de erro. Também simplificaremos o processo de fazer chamadas de API e veremos como isso pode ser feito e alcançado com o axis. Também entenderemos como você pode fazer chamadas simultâneas de EPI usando axis Também temos um cenário em que abordaremos diferentes tipos de solicitações de EPI, como get request, post request, aprimoraremos a segurança usando o Então, todos esses recursos todas essas coisas são o que abordaremos neste curso específico. E ao final deste curso, posso garantir que você terá habilidades para integrar qualquer tipo de EPI em seu aplicativo de reação com confiança, sem E isso abriria infinitas possibilidades para você no mundo do desenvolvimento web. Para quem é esse curso? Portanto, este curso é perfeito para quem deseja aprimorar suas habilidades de desenvolvimento de reações Então, se você é um novato, um desenvolvedor experiente ou um desenvolvedor intermediário ou se você está apenas explorando como os EPIs podem ser integrados a aplicativos front-end , esse curso seria perfeito para todos vocês Então, com esse conjunto, você está pronto para transformar a maneira como lida com APIs em seu aplicativo web que é construído usando o react Estou muito empolgada em guiá-lo por este curso e nos vemos do outro lado. 2. Configurando o React Project: Oi, aí. Então, agora é hora de começarmos a criar nosso aplicativo react, e vamos fazer isso com a ajuda da linha de comando. Então, a primeira coisa que vou fazer é acessar ou navegar pela linha de comando até a pasta do projeto. Agora, o que quero dizer com pasta de projeto é que é uma pasta de minha escolha onde eu desejo ter meus projetos de reação organizados, ok? Então, o que você pode fazer é acessar o Finder. exemplo, se você estiver no Mac, você pode ir para o Finder ou se você estiver no Windows como eu, você pode ir para o Explorer, certo, e criar uma pasta no local de sua escolha, você pode chamar a pasta, como quiser Eu diria que é reagir. E então, a partir da linha de comando, você pode simplesmente navegar até o local em que criou a pasta. Então, eu criei essa pasta react aqui neste local específico, e CD é o comando, que é alterar o diretório, e está me ajudando a navegar ou acessar essa pasta específica ou estar nessa pasta a partir da linha de comando. Então, agora que estou nessa pasta específica, vou limpar todo o resto. Tudo bem Agora, nesta pasta específica, vou começar a criar meu aplicativo react. E para isso, vou usar o NPX, ok? Opa. Então, eu já criei alguns aplicativos de reação antes. Então você pode ver essa sugestão aqui, ok, mas não há nada que eu possa fazer sobre a sugestão. Está bem? Mas ignore essa sugestão por enquanto, porque o que esse terminal em particular faz é o que ele vê em seu histórico, ele continua sugerindo você, o que é bom. Mostrando todo o comando, tudo bem. Então, NPX, vou usar o NPX. Está bem? Agora, o NPX é uma sintaxe, certo? É usado para executar os pacotes de nós ou é usado para executar os E então vamos usar o aplicativo Create react. Tudo bem Agora, o que é o aplicativo Create react. O aplicativo Create React é uma espécie de ferramenta que ajuda você a criar todo o aplicativo react. Agora, por que estamos fazendo uso disso? Porque, você sabe, o projeto react tem que ser organizado de uma certa maneira. Por exemplo, ele precisa ter a pasta SRC. Ele precisa ter alguns arquivos. E tudo isso se junta e permite que você ou seu aplicativo funcione de forma perfeita, certo? Assim, você também pode criar esses arquivos manualmente. Mas essa é uma ferramenta que permite criar ou configurar a estrutura do aplicativo da maneira correta. Está bem? E depois disso, vou apenas mencionar o nome do meu aplicativo, que eu possa chamá-lo de aplicativo MyRact, algo assim Ok. E o que eu posso fazer é simplesmente pressionar Enter. No momento em que eu pressiono Enter, o que isso fará é criar uma pasta nesse local específico. Então, nesse local específico, ele criará essa pasta. Por que está criando uma pasta nesse local? Porque eu naveguei até essa pasta a partir do terminal, e esse será o nome da pasta sob a qual todos os arquivos do meu projeto react existirão Está bem? Assim, você pode pressionar Enter e deverá ver algum tipo de processamento acontecendo. Assim, você pode ver a criação de um novo aplicativo de reação nesse local específico. Ele está instalando alguns pacotes e isso pode levar alguns minutos. Então, ele está instalando. Ele também informa o que está instalando. Está instalando react, react Dom, react scripts e tudo, tudo o que precisa. Então, vamos esperar um pouco até que todo esse processo seja concluído e vejamos uma confirmação. Então, recebi a confirmação e também recebi uma pequena mensagem. Ok. Então, quando comecei a gravar este vídeo, há uma nova versão secundária, que diz sobre o NPM, que está disponível, e está me perguntando se eu posso atualizar Ok, então eu vou atualizar mais tarde. Você pode não ver isso, ok, mas vou ignorar isso por enquanto. É só uma notificação de upgrade. Você pode ver a confirmação aqui, happy hacking. Tudo bem. E se você rolar até aqui, verá todo o processo do que aconteceu. Então, executamos esse comando aqui. Opa Deixe-me rolar para cima. Então, executamos esse comando aqui. Ok, se você vier aqui, você pode ver que ele adicionou tantos pacotes. Demorou 36 segundos. Se você vier aqui, ok, foi dito que o sucesso criou esse aplicativo específico neste local e dentro desse diretório. Então, você precisa navegar até esse diretório e, dentro dele, você pode executar todos esses comandos aqui. Está bem? Agora, depois de navegar, ele fornece comandos prontos, como o NPN start, ele será iniciado no servidor de desenvolvimento Portanto, o aplicativo react que você criou vem com um servidor inbllt incorporado Você pode executar este comando para agrupar o aplicativo e em arquivos estáticos, basicamente para implantação em produção. Isso iniciará o executor de teste, caso você queira executar casos de teste, NPM run Ok, isso é algo que você pode executar. Então, a sugestão é que você pode começar executando isso aqui. Vou copiar isso. Está bem? Vou colar aqui. Vou até este diretório, o, e então ele lhe dirá o início do NPM Agora, esse é um comando usando o qual você pode iniciar um servidor de desenvolvimento em sua máquina local. Então eu posso executar esse comando também, ok? E você podia ver o aplicativo instalado e funcionando. Então esse é o aplicativo, ok? Você pode ver o navegador aberto automaticamente, e você pode ver que este é o aplicativo que está funcionando. Agora, este é um servidor que está mostrando seu conteúdo ou se está executando seu aplicativo react no navegador Agora, qualquer alteração que você fizer nos arquivos, você verá recarregamentos ao vivo acontecendo aqui. Tudo bem? Agora, você pode ver a mensagem aqui, como se precisasse editar esse arquivo específico e salvá-lo para recarregar Está bem? Portanto, essa interface que vem desse arquivo em particular, é o que diz. E se você clicar aqui, esse é o link para o site oficial do react. É a isso que está vinculado. Está bem? Assim, você pode acessar esse site e conferir ou ler algumas coisas também. Tudo bem Mas algumas coisas que eu gostaria de mencionar aqui são que, depois de iniciar o servidor de desenvolvimento, você pode pará-lo pressionando Control e C no Windows ou Command e C no Mac. Está bem? Estou no Windows, então pressiono Control C, e você pode ver que ele encerrou esse trabalho em particular E aqui está, se você tentar atualizar, isso não vai funcionar Ok, porque o servidor está inativo, certo? Agora, para colocar seu servidor em funcionamento, você precisa executar o NBM start nessa pasta específica Está bem? Só então seu servidor estará ativo. Portanto, durante o desenvolvimento, você pode manter o servidor ligado e realmente modificar os arquivos, salvar e ver as mudanças acontecendo ao vivo. Está bem? Agora, vou falar um pouco mais sobre esse comando Então, criamos o aplicativo react ou todo o aplicativo usando esse comando específico. Agora você também pode adicionar opções aqui no final. Está bem? Então, o que você pode fazer é usar os modelos aqui. Está bem? Agora, digamos que, ao trabalhar com o react, você também queira usar o texto datilografado. Está bem? Então, se você estiver usando texto datilografado, você pode adicionar algo assim Você pode dizer template aqui e digitar script. Não vou executar isso, mas isso é apenas uma informação extra. O que isso fará é usar o modelo de texto datilografado para criar seu aplicativo e adicionar o suporte de texto datilografado desde o início, o que é útil se você estiver trabalhando em um projeto maior que pode se um projeto maior que pode beneficiar da Tudo bem Então você pode usar esse comando dessa forma, tudo bem. Espero que esse comando esteja claro. NPX cria um toque de reação. Portanto, não temos o servidor aberto em execução, mas agora você pode reiniciar o servidor novamente dizendo NPM run NPM start. Me desculpe Então, é o início do NPM, algo assim. E se você iniciá-lo, ele iniciará novamente o servidor. Tudo bem Então, espero que isso seja útil e espero que você tenha conseguido acompanhar. 3. Configurando nosso IDE - Código do Visual Studio: Este é nosso primeiro aplicativo baseado em reação, que criamos, ok? Ou devo dizer que não criamos. Ok. Portanto, esse é um projeto gerado automaticamente usando o aplicativo Create React. Ok, e também está nos dando algumas dicas aqui. Você pode editar o app dot qs e salvar para recarregar. Está bem? Ele tem um link para aprender a reagir, que o levará ao site oficial do react. Tudo bem, até agora tudo bem. Portanto, este é o nosso aplicativo instalado e funcionando. Agora, o que precisamos fazer? começar a codificar e modificar as coisas. E o que vamos fazer para isso? Vamos instalar um IDE que é o código ID do Visual Studio. Ok. Então, isso é o que parece. Se você já o tem no computador, se não o tem, acesse este site oficial. É uma ferramenta gratuita. É gratuito, desenvolvido em código aberto e executado em qualquer lugar. Como estou no Windows, estou solicitando que eu baixe uma versão estável para Windows Você pode alternar para qualquer sistema operacional necessário. Mas se o seu sistema operacional tiver um instalador aqui, ele funcionará automaticamente. Então, se você estiver fazendo login do Mac aqui, ele mostrará o download do Mac. Está bem? Então, seja qual for a plataforma em que você estiver abrindo isso, ele mostrará esse botão e você poderá passar por isso se não souber o que é o código do Visual Studio Mas basta fazer o download e instalá-lo como qualquer outro programa de software. Eu já o tenho instalado, então não vou mostrar as etapas de instalação, mas as etapas de instalação não são nada complexas. É muito simples e direto. 4. Primeiros passos: Agora, depois instalar o código do Visual Studio com êxito, você verá uma página como esta. Portanto, se você abrir o código do Visual Studio, pela primeira vez, verá esta página de boas-vindas. Agora, sou usuário do Visual Studio Code há algum tempo, ok? E você está vendo todos esses projetos recentes. Portanto, é provável que você não veja essa lista de projetos recentes, a menos que seja um usuário. Está bem? Mas como sou usuário, como eu disse, estou vendo a lista de projetos recentes que usei ou criei no passado. Além disso, você verá essas opções aqui: novo arquivo, abrir arquivo, abrir pasta, clonar repositório Git, conectar-se a tudo É uma ferramenta muito útil. Código do Visual Studio, eu o uso o tempo todo. Agora, para abrir o projeto, você conhece a pasta em que criou o projeto. Então você pode simplesmente clicar aqui, Abrir pasta e navegar até o local da pasta onde você criou o projeto. Como alternativa, se por algum motivo você não estiver vendo isso, você pode ir para o arquivo nas opções do menu aqui e ver a pasta aberta. Ambos são iguais. Então, o que vou fazer é selecionar OpenFolder, navegar até o diretório de minha escolha e abrir o projeto aqui Agora, quando selecionei Abrir pasta, vi essa janela de pasta, que é exploradora, navegue até a pasta em que criei o aplicativo react E vou selecionar essa pasta específica. Este é o meu projeto de aplicativo react que criamos. Lá dentro, você verá alguns arquivos, mas precisará selecionar a pasta raiz. Eu direi que selecione e ela abrirá essa pasta específica para mim. Agora eu posso fechar esta página de boas-vindas aqui, ok? Então você pode ver o projeto aqui no lado esquerdo, ok? Você pode ver essa pasta inteira. Se você expandir isso, você verá os arquivos dentro. Está bem? Então, quando você executou o comando chamado Create React app, ok com Create React app, ele criou tudo isso para você. Você também pode criá-lo manualmente. Mas, como você pode imaginar, isso vai ser muito entediante, certo Então, essa ferramenta específica, aplicativo Create React, faz o trabalho para você, configurando toda a estrutura do projeto para você. Está bem? Analisaremos essa estrutura de projeto em breve, mas, por enquanto, o que eu também gostaria de explicar é que temos o servidor instalado e funcionando a partir do terminal. Agora, o que posso fazer é não precisar usar um terminal externo. O código do Visual Studio tem uma maneira pela qual eu posso realmente ter um terminal dentro do código do Visual Studio Dessa forma, nunca preciso sair código do Visual Studio e mudar para um terminal local. Aqui no topo das opções, vou ver o terminal aqui. Você pode dizer novo terminal, e você pode ver que este é um terminal integrado dentro do código do Visual Studio. E se você disser PWD, que é o diretório de trabalho presente, o terminal é aberto automaticamente na pasta que você abriu dentro do código do Visual Studio, que é a pasta do projeto Portanto, você também não precisa navegar, não precisa executar comandos, CDs e tudo mais e navegar, isso funciona como um terminal local. Então, aqui, posso dizer que o NPM começa aqui. No momento em que eu disser, recebo um erro, você pode ver que algo já está sendo executado na porta 3.000 E o que está sendo executado, nosso próprio aplicativo está em execução e está nos perguntando se você deseja executar o aplicativo em outra porta. Eu não quero fazer isso. Eu vou dizer que não. Ok, e isso simplesmente interromperá a execução. Está bem? Mas o que vou fazer é fechar esse servidor porque não quero mais usar um terminal externo, você sabe, externo por aqui. Está bem? Quero usar terminal fornecido pelo código do Visual Studio e iniciarei o NPN, e agora ele deve executar o servidor de desenvolvimento para você Está bem? Dessa forma, o que podemos fazer é mover isso para uma nova janela. Então, aqui estamos na nova janela, e eu tenho o código do Visual Studio em execução na nova janela. Então, dessa forma, eu não preciso deixar o código do Visual Studio nunca. Eu posso até minimizar isso aqui desse jeito. Está bem? Eu posso até mesmo criar um novo terminal a partir daqui, para que você possa ver mais, e você pode ter vários terminais funcionando aqui. Está bem? É muito útil, e essa é a razão pela qual. Então, esse tipo de ferramenta que o Visual Studio Code fornece é a razão pela qual ele é tão amado na comunidade de desenvolvedores. Agora, também mostrarei a lista de extensões que eu tenho. Então aqui, se você acessar essa guia de extensão no lado esquerdo, aqui você tem algumas opções como pesquisar, controlar o código-fonte, executar e desembarcar tudo isso, ok? Estou usando o Docker também em alguns dos meus projetos, então você também pode ver o Docker aqui Mas você pode não ver isso. Está bem? Isso precisa de uma extensão separada. Está bem? Mas se você for para a extensão, agora o que são extensões? Portanto, as extensões permitem que você aprimore ou estenda a funcionalidade padrão que o Visual Studio Code já fornece. Então você pode ver, eu tenho uma extensão para o notebook Jupiter. Ok. Sempre que estou programando em Python , e se eu quiser suporte para notebook , eu uso essa extensão Ok. Então eu tenho essa extensão. Isso não é necessário para reagir. Eu tenho a extensão Python. Está bem? Agora, essa tag de renomeação automática, isso pode ser útil para o React porque, você sabe, se você estiver renomeando uma tag, tudo bem, e se houver uma tag de fechamento, o que isso fará é renomear a versão paga dessa tag específica Ok, então isso é algo que você pode ter. É útil. Por exemplo, se eu tiver que dar um exemplo, deixe-me dar um exemplo. Então, digamos que se eu criar ou deixar eu abrir algum arquivo aqui. Ok, deixe-me abrir um arquivo HTML. Agora, essa coisa aqui, você pode ver, deixe-me ir até aqui, rolar para baixo. Portanto, esse título tem uma tag de abertura e uma tag de fechamento. Então, por causa dessa extensão específica, se eu renomear a tag de abertura, você pode ver que a tag de fechamento também está sendo renomeada Está bem? Então esse é o benefício dessa tag renomeada automaticamente Você não precisa renomear a tag de abertura primeiro e depois renomear a tag de fechamento, coloração por pares, como você pode ver pelo próprio ícone, está acostumada a destacar a cor do par final do colchete Isso é útil se você estiver usando muitos colchetes em seu Okay, Debugger for Java, contêineres de desenvolvimento, jango doco, tudo isso é usado para outras linguagens, pacote de extensão para Java, gradle para Java muitos colchetes em seu Okay, Debugger for Java, contêineres de desenvolvimento, jango doco, tudo isso é usado para outras linguagens, pacote de extensão para Java, gradle para Java e itálico. Está bem? Isso é para desenvolvimento assistido por IA. Isso também serve para exemplos de uso da API Intelicode. Ok. Eu tenho alguns para Python Então, tudo isso é relacionado ao Python, vou rolar para baixo, um servidor ativo Não precisamos desse Maven para Java. Isso também não é necessário. Mais bonito é algo que você pode usar. Isso formata o código. Ele organiza o código para você. Ok. E sim, isso é o que temos. Ok. Eu também vou adicionar algumas extensões agora mesmo aqui. Está bem? Então, o que você pode fazer é pesquisar trechos de código de reação aqui, algo assim Ok. Ok, então você pode pesquisar o ES seven plus react, algo assim. E você verá essa extensão com quase milhões de instalações Então, são 12,9 milhões enquanto estou gravando este vídeo. Obviamente, isso continuará aumentando e você poderá ver um número diferente ao assistir isso. Então, isso é extensão. Esse é o nome ES seven plus react redux react Native snippets Agora, o que isso faz é te dar modelos, ok? Por exemplo, se você quiser criar uma função, então você pode dizer RAFC Você pode simplesmente digitar isso e ele fornecerá toda a definição da função. Ok. Então, esse tipo de atalho ele tem, o que ajuda você a economizar tempo Então você pode instalar isso. Vou clicar em Instalar e adicionar à minha lista de extensões. Está bem? Então, sim, nós o temos instalado agora, ok? Você pode explorar mais plug-ins ou extensões de reação no mercado aqui e pode brincar com eles. E você pode aprimorar a funcionalidade padrão que o Visual Studio Code já fornece a você. Tudo bem Então, sim, trata-se de configurar o código do Visual Studio, e espero que você o tenha achado útil. 5. Integrando APIs no React: Então, agora é hora de começarmos a falar sobre como você pode trabalhar com EPIs em seu aplicativo de reação Agora, APIs, como você sabe, EPI significam interface de programação de aplicativos e é uma forma um servidor remoto ou back-end expor o conjunto de funcionalidades ao cliente Está bem? E você pode ter um aplicativo de reação no front-end que talvez queira consumir os serviços que estão sendo expostos pelo servidor de back-end Certo? E hoje, se você está criando qualquer tipo de aplicativo, usar EPIs é muito, muito comum, ok? Não consigo imaginar um aplicativo de nível de produção não consuma EPIs Ok, as APIs são muito comuns nos dias de hoje. E se você quer se tornar um desenvolvedor sério, é importante que você entenda como você pode usar EPIs da maneira certa em seu aplicativo de reação Então é isso que vamos abordar uma forma prática, ok? Então, o que vamos fazer é que eu já tenho esse aplicativo react, que criei usando o VT e tenho arquivo GSX do aplicativo, onde vou escrever todo o meu código É um arquivo de componente, que está sendo renderizado no Minix aqui Você pode ver que está sendo renderizado aqui. Tudo bem? Agora, a primeira coisa para trabalhar com APIs é que você precisa de um conjunto de ABIs, ok E, felizmente, temos um conjunto de APIs falsas gratuitas aqui. Ok, isso pode ser usado para testes e prototipagem. Então, vou usar este site chamado snplaceholder.typod.com . Tudo bem E como chegar até aqui, você pode digitar diretamente o URL no navegador ou pesquisar por GCN Placeholder no Google e você verá esse espaço reservado cn Tudo bem Então, acessando este site, você verá que ele fornece EPS falso e confiável gratuito para testes, ok? Ele lista os patrocinadores aqui. Ok, e isso te dá uma ideia de como você pode usá-lo aqui Está bem? Então você pode ver aqui. Esse é o endpoint que ele está fornecendo. Está bem? Sim, é um ponto final de dois, e você pode acioná-lo aqui Você verá o S e a resposta. Está bem? Você pode ver aqui. Portanto, você tem o ID do usuário, o ID , o título e o preenchimento aqui exibidos. Está bem? E você pode acessar a API. Ok. Deixe-me gostar muito, você pode acessar a API dessa forma usando o método fetch em JavaScript. Agora, buscar JavaScript não é um conceito de reação, mas é conteúdo relacionado a JavaScript, desculpe, conceito de JavaScript. E como o react é baseado em JavaScript, você pode usar fetch em seu código Se você executar esse script, o que isso está fazendo é que fetch basicamente retorna uma promessa e, em seguida, estamos fazendo uso dela , em seguida, aqui Então espera que isso termine. Então você recebe a resposta aqui e ela é executada. Então, o que está acontecendo é que a resposta é levada em consideração aqui e convertida em JSN Depois que esse processo for concluído, você terá o JCN bloqueado no Está bem? Se você executar esse script, verá que essas são as saídas que você obtém, certo? É construído em um navegador. Isso permite que você corra até aqui. E há muitos endpoints que ele fornece. Ok, você pode ver o slash Post. Eu vou te fornecer 100 posts, então você pode ir até aqui. Você pode ver 100 postagens que ele está fornecendo a você. Então, se você quiser muitos dados, pode consultar esses comentários, álbuns, fotos, que fornecerão 5.000 fotos, todos, usuários e tudo mais. Está bem? Então, sim, essas APIs que você pode usar Há muitas coisas. Se você quiser fazer uma solicitação de obtenção, esses são dez pontos. Se você quiser fazer uma solicitação de postagem, há alguns endpoints aqui Solicitações de patch, solicitação de exclusão também. Agora, se você conhece os EPIs e como eles funcionam, você sabe que EPIs são de tipos diferentes, como get, post, put, patch, delete, Então, sim, isso é sobre esse suporte do tipo JCN. Desculpe, JCNPlaceHlder. Tudo bem O que você pode fazer é que usaremos isso aqui. Está bem? Então, chegando ao nosso aplicativo aqui, tenho uma configuração de componente muito simples. Está bem? Está apenas retornando um Jex simples, que está apenas tendo o cabeçalho Está bem? Então, o que faremos é obter esses dados. Ok, então vou copiar isso aqui. Ok, imediatamente. E vou colocar isso imediatamente aqui no meu componente, mas não vou colá-lo Ok. Vou usar o gancho de efeito de uso aqui. Porque há um efeito colateral, certo? E como usamos o efeito de uso? Então, Opa, basta aparecer. Ok, então como fazemos uso do efeito de uso? Eu tenho uma função, em primeiro lugar, o. E aqui, essa é uma função que será chamada com a lógica. Ok. E então eu tenho uma vírgula com a dependência Então, qualquer dependência que eu queira adicionar, eu posso adicionar aqui Ok. Isso está feito. Ok. Esta é uma função de seta, então ela precisa ter uma seta. Tudo bem Essa é uma sintaxe que eu vou usar, ok? Agora, eu quero realizar essa operação. Então, a operação residirá nessas chaves, então vou acabar aqui e colar o código de busca Está bem? Eu vou, você pode terminar isso com um ponto e vírgula, se quiser, assim Ok, vou diminuir o zoom para que fique visível em uma única tela aqui. Está bem? Agora, uma coisa a observar aqui: estou passando uma área de dependência vazia aqui porque quero que esse gancho de efeito de uso ou esse código sejam executados na primeira montagem ou na quantidade do componente, na primeira renderização e não depois disso Quanto ao efeito das regras de uso, se você quiser que uma lógica específica seja executada na montagem do componente, você precisa passar uma matriz de dependências vazia aqui Está bem? Agora, é claro, o que isso faz é buscar isso Ele faz uma chamada de busca para esse endpoint específico. Ele obtém a resposta e converte em um JCN aqui, e então bloqueia o JCN no console usando Está bem? Então, imediatamente, o que eu vou fazer é abrir o Console aqui Ok. E eu vou te dar um aviso aqui de que essa coisa será impressa no console Por quê? Porque estamos rodando no modo estrito por aqui. Ok, Mint ch sex. Você pode ver o modo estrito. Se você quiser ver a saída apenas uma vez no monte de componentes, você deve remover o modo estrito de lá Tudo bem Então, vou guardar isso. No momento em que você salvar, você verá essa saída no console. Tudo bem Você pode ver. E você pode expandir, como verá, use o ID. Uh, título de identificação aqui e quedas concluídas. Tudo bem Então, isso está funcionando perfeitamente bem, e é assim que você pode buscar os dados e exibi-los no console. Tudo bem? Agora, é claro, exibir dados no console não é o objetivo, mas o objetivo aqui é ver como você pode usar o fetch para fazer chamadas de PA Ok, agora temos os dados em nosso aplicativo react, mas estamos apenas registrando-os em nosso console. Agora, a partir daqui, dessa parte do código, podemos levar esses dados para qualquer lugar, certo? Podemos levar esses dados para qualquer lugar, seja, se eu quiser, também posso atualizar ou definir esses dados em um estado. Está bem? E vamos fazer isso. Está bem? Então, o que eu vou fazer é ter um estado aqui. Eu vou dizer dados. Eu terei definido os dados aqui, algo assim, direi use o estado aqui e terei um MTRA como inicialização aqui Então, eu tenho esse estado de dados. Agora o que eu posso fazer é ter esse JCN aqui, certo, como entrada Então, em vez de registrá-lo no console, o que eu gostaria de fazer é dizer, em vez do registro do console JCN, eu diria definir dados, e vou passar esse JCN Assim. Está bem? E isso está feito. Está bem? Agora, se eu salvar isso, os dados não serão registrados no console, se eu atualizar Os dados não estão bloqueados no console, mas agora estão atualizados para o estado. Tudo bem? Agora está atualizado para o estado. Mas não estamos fazendo uso do estado nem o exibindo em nenhum lugar, certo? Então, o que você pode fazer é exibir os dados de busca também, certo? Então, o que eu vou fazer é vir até aqui e nos deixar ter uma lista não ordenada Então, já que estamos recebendo uma lista de valores aqui. Então, se você ver os dados, se eu fizer uma ligação aqui, ou se tivermos os dados aqui, certo? Isso é o que os dados são. É assim que está sendo enviado para nós. Assim, podemos exibir o ID do usuário, ID, o título e completá-lo. Então, o que vou fazer é ter uma lista não ordenada aqui. Vou usar um pouco de jar Script. Ok, vou dizer mapa de pontos de dados. Agora, como estamos fazendo uso da matriz, ok, vou dizer mapa de pontos de dados. Agora, aqui dentro do mapa, o que faríamos é eu dizer para fazer aqui, porque é isso que estamos buscando Ok, estamos buscando o que fazer. Ok. E então, aqui agora, estamos recebendo apenas um objeto. Está bem? O que faremos é atualizá-lo posteriormente para obter também uma lista de objetos. Ok, então não se preocupe com isso. Ok. Na verdade, eu diria aqui que, como estamos recebendo apenas um objeto, nem precisamos de um mapa. Está bem? Então, o que podemos fazer é me deixar remover isso. Está bem? Nem precisamos de um mapa, eu diria. Eu simplesmente o exibiria dessa forma. Está bem? Então, vou dizer que os dados estão tensos, e qual é a propriedade Propriedade é título, certo? Temos uma propriedade de título, então vou dizer título, algo assim. Ok. Opa, então isso estará no par de colchetes encaracolados. Você pode ver que esse é o título que estamos recebendo da API. Você pode ver. Ok, esses são os dados que estamos obtendo, certo? Você também pode exibir o ID, o ID do usuário preenchido. Está bem? Então você pode exibir o ID aqui. Ok. Também posso exibir o ID do usuário, algo assim. Ok. ID do usuário. Ok. Você pode ver que o ID é um, o ID do usuário é um. Ok. E você também pode ter algum tipo de texto aqui, ID do usuário. Tudo bem, então, ok, não, isso é identificação. Então, isso é para fazer ID em resumo. Para fazer identificação. Ok. E esse é o ID do usuário. Então, eu vou ter um ID de usuário, algo assim. E isso é para fazer o título Ok, algo assim, e você pode ver os dados, certo? E concluído ou não, isso também você pode ter aqui. Está bem? Tão completo ou não, que você também pode exibir. Ok, depende totalmente de você, mas não precisamos de um mapa porque não estamos recebendo uma lista aqui. Está bem? Então, isso é para um único conjunto de itens aqui. Agora, digamos que amanhã amanhã. Então, aqui, vou rolar para baixo. Aqui estamos recebendo a lista de tarefas. Você pode ver, estamos recebendo a lista de tarefas. Então, essa mesma lógica, você pode convertê-la em fazer aqui, certo? Você pode fazer isso, ok? Ou vamos mudar isso para postar também. Você pode alterá-lo para postar, se quiser. Está bem? Então, o que vou fazer é pegar o ponto final. Postar. Está bem? Vou adicioná-lo aqui. Ok. E vou substituir esse endpoint por isso, algo assim Vou remover isso. Ok. Isso é bem simples E agora, o que vou fazer é ter um mapa de pontos de dados porque agora estamos recebendo a lista de informações, certo? Então, eu vou ter esse mapa. Está bem? Então, primeiro de tudo, antes de adicionar o mapa, terei uma lista não ordenada Então eu vou dizer mapa de dados aqui. Ok. E aqui, eu vou dizer post. Para cada postagem, ok, eu preciso fazer alguma coisa. Está bem? O que eu vou fazer? Isso é o que vou definir aqui, ok? Para cada postagem, eu vou ter uma lista aqui, ok? E a lista terá uma chave. Está bem? Agora, qual será a chave? Qual deve ser o valor da chave? Portanto, deve ser ID. Eu terei um identificador exclusivo para a chave. Está bem? Então, eu posso dizer post dot ID aqui. Ok. Então aqui, depois de LI, terei a tag P ou tag H two, dependendo de como você deseja exibi-la. Eu vou dizer post dot title, algo assim. Ok. E então, deixe-me ver, título é um e o corpo é um. Vou dizer título, e depois P, e então você tem, uh, corpo da postagem. Então você pode dizer postt body, algo assim. Está bem? Isso está feito. Ok, agora você está recebendo o erro. Então, se você ver o erro, acho que sei qual é o erro. Provavelmente tem que funcionar ou você pode ver que o mapa de pontos de dados não é uma função. Está bem? Entendido. Então, aqui estamos definindo isso como uma matriz. Está bem? Então, vamos remover isso e eu vou definir isso como nulo aqui Ok. E vamos ver se o erro desaparece. Ok, o erro não está acontecendo. Ok, então eu descobri um problema. O problema foi definir isso como nulo. Está bem? Então, eu configurá-lo para uma matriz vazia estava certo. Está bem? Não sei por que recebi o erro ao fazer uma atualização forçada, o erro desapareceu. Está bem? Então, o código está certo. Eu coloquei essa matriz vazia corretamente inicialmente, ok, porque queremos tê-la como uma matriz porque estamos fazendo uso do mapa aqui, certo? E o mapa é um método apenas para matrizes, ok? Funciona com matrizes Agora, se você ver, depois de fazer uma atualização completa, e se eu ver aqui, você pode ver o corpo e o título da postagem, você pode ver como ela foi exibida aqui Ok. Se quiser, você pode exibir o corpo da postagem usando a etiqueta da tigela. Você pode ter B aqui. Está bem? Ou você pode ter fortes, na verdade, ok? Então eu vou dizer forte. Ok. E vou apenas adicionar o título envolto no forte e você pode ver o título e a pose aqui. Ok. Então, na verdade, estamos buscando 200 poses Ok, porque é isso que essa API diz, Ok, se você ver aqui, ela dá, desculpe, 100 poses, não 200 postagens. Está dando 100 pontos e estamos exibindo 100 poses aqui. Está bem? Usando o fetch fetch do JavaScript. Está bem? Então, como isso funciona é que, inicialmente, esse bloco de código de efeito de uso é executado na primeira montagem do componente. Por que ele é executado na montagem do primeiro componente? Por causa dessa matriz de dependências? De acordo com as regras, se a matriz de dependências estiver vazia, tudo bem, qualquer bloco de código que você tenha aqui será executado na montagem do componente uma vez Agora, o que acontece na montagem do componente, você usa fetch. Você chama esse endpoint aqui, e então você tem um conjunto Você recebe uma promessa e depois a usa aqui para obter a resposta em Jason e, em seguida, está usando a resposta para definir dados. Está bem? O que são dados definidos? Definir dados é usar dados definidos, você pode definir os dados aqui, que nada mais é do que o estado aqui. Portanto, é um conjunto de funções. Está bem? Então você tem dados com esses dados que você está recebendo do servidor. Agora, o que você faz? Você pode usar o mapa aqui para exibir os dados dessa maneira. Ok, então estamos iterando e exibindo Se estamos recebendo apenas uma postagem aqui, se você está recebendo apenas uma postagem e não a lista de postagens , você não precisa de um mapa porque não precisa iterar os dados, certo? Espero que isso esteja fazendo sentido, ok? Então é aqui que todos os conceitos do Javascript react se juntam. Ok, então quantos conceitos estamos usando? Estamos usando ganchos de efeito de uso, estamos usando o conceito de ganchos Você está fazendo uso dos estados por aqui. Você está usando o fetch from JavaScript. Você está fazendo uso de promessas aqui. E aqui, você está usando a função de mapa com matrizes e está exibindo os dados Você também está fazendo uso do sexo dela. Tudo bem? Assim, você pode ver como isso está renderizando os dados de um servidor remoto E espero que você tenha conseguido acompanhar, e espero que tenha sido útil. 6. Gerenciando eficientemente estados de carga e tratamento de erros: Oi, aí. Então, estamos falando sobre como você pode trabalhar com APIs no react E no processo, o que estamos fazendo é criar um componente muito simples que faz uma chamada para essa API para obter a lista de postagens, e estamos exibindo os dados aqui no componente. Está bem? E essa é a saída que estamos obtendo até agora. E se você quiser ver isso em tela cheia, então este é o nosso EPI, e isso é o que a saída é agora, ok? Você está vendo todas as postagens. Ok. Não se preocupe Este é este post ou em algum outro idioma. Está bem? Talvez me deixe traduzir se eu traduzir isso, diz que está em latim. Ok. Absolutamente ok. Só queremos alguns dados fictícios para trabalhar, certo? Não importa qual idioma. Ok. Então, sim, isso é post. Agora, estamos exibindo os dados. Agora, o que pode acontecer é que sempre que você está trabalhando com EPIs você está fazendo uma chamada de servidor remoto, ok? Você está fazendo uma chamada remota para alguma coisa, certo? E haverá um cenário em que os dados que você está recebendo estão demorando um pouco Portanto, é uma boa prática manipular ou ter uma interface na qual você informa ao usuário que os dados estão sendo buscados, e esse estado, podemos chamá-lo de estado de carregamento, certo Então, como você lidaria com o estado de carregamento ao fazer ou ao buscar dados de um servidor remoto Além disso, esse foi o primeiro cenário em que você gostaria de lidar com um estado de carregamento O segundo cenário é que talvez você queira lidar com qualquer tipo de situação de erro, ok? Agora, o erro pode ser como se houvesse um erro de digitação na URL ou os dados fossem buscados, mas quando você os converte em JSN, você está recebendo um erro ali, ok, porque os dados recebidos não estão no formato Como você lidaria e gerenciaria os erros nesse caso? Ok, isso é algo sobre o qual vamos falar. Então, duas coisas que estamos falando sobre como lidar com o estado de carregamento e gerenciar os erros ao trabalhar com APIs, ok? Primeiro, vamos falar sobre o estado de carregamento. Está bem? Portanto, para o estado de carregamento, podemos realmente ter uma interface de usuário personalizada ou um G six diferente que retornamos se o estado estiver carregando. Está bem? Então, o que eu vou fazer é ter um estado aqui primeiro. Eu vou dizer carregando. Ok, e eu vou dizer que configure o carregamento aqui. Ok, e eu vou dizer use state, algo assim. Ok. E eu vou ter isso. Ok. Então você pode ter isso como um booleano Esse é um estado booleano aqui, ok? O estado tem dados booleanos. Portanto, verdadeiro significa que está carregando dados no momento e falso significa que não está carregando no momento. Está bem? Então, vou inicializar isso como falso, digamos aqui Ok. Agora, o que faríamos é se o estado for verdadeiro, o que podemos fazer é não querer mostrar essa interface. Está bem? Porque se os dados estão sendo carregados, o que há nessa interface os dados de postagem que estamos obtendo do servidor. Se os dados ainda não tiverem sido buscados e estiverem no estado de carregamento , não devemos exibi-los Em vez disso, precisamos de um tipo diferente de interface de usuário, qual precisamos dizer ao usuário que, ei, os dados estão sendo carregados. Está bem? Então, o que você pode fazer é ter uma declaração aqui. Você pode dizer se, e eu direi se estiver carregando. Ok, então se o carregamento for verdadeiro, o que eu faço é voltar. Portanto, você pode ter várias declarações de devolução aqui. Ok. Então aqui você está retornando um pouco de JSX, mas se o carregamento for verdadeiro, você retorna um J six diferente aqui e o que estamos Retornaremos uma tag P simples aqui. Ok, então vou apenas adicionar uma tag P e vou dizer carregando, algo assim. Muito simples. Ok, é só uma mensagem. Não estou me estressando em criar uma interface complexa, mas você também pode definir algo complexo aqui. Isso é o que isso significa. Está bem? Agora, aqui, isso não está sendo renderizado porque o estado é falso, certo? Então, no momento em que eu mudar o estado para verdadeiro, se eu salvar isso, você verá o carregamento sendo exibido. Certo? Carregar significa que ele ainda está sendo carregado e os dados ainda não foram buscados Está bem? Então é isso que o usuário verá quando os dados forem buscados, certo? E estamos alterando manualmente isso verdadeiro para falso e falso para verdadeiro, certo? E estamos vendo se está funcionando bem. Está bem? Portanto, isso não está recebendo nenhum tipo de erro, isso é perfeitamente válido. Você pode ter várias declarações de retorno, mas elas devem ser condicionais Como se isso fosse condicional, certo? Você não pode simplesmente devolver a declaração aqui. Ok, na verdade é uma função, certo? Isso se torna inacessível porque você está voltando para cá, certo Então, não faz sentido porque essas são funções de script Ja aqui, nada mais, certo? Então você pode ter esse tipo de retorno. Você pode dizer se está carregando e devolver isso, ok? Agora, o que eu preciso fazer é quando os dados estão sendo buscados, eu preciso definir o valor para carregar o estado para carregamento aqui Está bem? Então, o que eu vou fazer é aqui, inicialmente, dizer que o estado é falso, ok. E dentro desse efeito de uso aqui. Então, quando os dados estão sendo buscados, ok? Eu vou dizer que está carregando. Está bem? Então, quando estamos configurando os dados aqui. Então, inicialmente, quando o carregamento começa dentro desse efeito de uso, posso dizer que defina o carregamento como verdadeiro. Algo parecido com isso. Ok. E então, uma vez que os dados são buscados aqui. Então, quando os dados do conjunto estão sendo chamados aqui, quando o carregamento é concluído, podemos ter, podemos adicionar isso ao Cibras porque agora estamos adicionando mais de uma instrução e aqui eu posso dizer que set loading to that off pode dizer set loading to the of falls porque o carregamento está concluído, certo? Ok. Então é assim que você pode gerenciar o carregamento. Agora, se você salvar isso, se estiver atualizando, verá o carregamento sendo exibido quando a chamada EPA estiver Você pode ver, você pode ver. Isso acontece por quase um segundo porque o EPA é rápido, é claro Ok. Mas se a API estiver demorando um pouco, é claro, ela ficará lá por um tempo. Então, o que estamos fazendo? Estamos gerenciando o estado de carregamento com a ajuda de um estado aqui, ok? Estamos exibindo o carregamento com a ajuda de um estado. Temos o estado de carregamento definido com o valor padrão de quedas e, em seguida, temos essa interface de usuário que, se o carregamento for verdadeiro, retorne esse JSX, ok Você pode modificar isso para o que quiser. Você pode ter um CSS personalizado definido para isso. A escolha é totalmente sua. Mas como isso está sendo exibido e escondido? Primeiro no gancho de efeito de uso, a primeira coisa que estamos fazendo é definir o carregamento como verdadeiro. E então estamos configurando o carregamento para quedas. Agora, se você perder uma vez que os dados são buscados e atualizados no estado, estamos configurando o carregamento para fols para que os dados Se você perder essa etapa por algum motivo, configurando o carregamento para dobras, ele ficará preso quando o carregamento for verdadeiro Mesmo que os dados sejam colocados aqui para dentro do estado aqui, certo? Você não está atualizando o estado que você tinha aqui inicialmente. Preciso atualizar isso. E no momento em que eu atualizo, você verá os dados sendo buscados E isso dá uma boa indicação para o usuário de que os dados estão sendo carregados, se o EPI demorar Então, é assim que você pode gerenciar o estado de carregamento ao trabalhar com chamadas de API. Está bem? Agora vem a segunda parte, que é o tratamento de erros. Está bem? Agora, tratamento de erros, é evidente que, se você estiver trabalhando com EPIs, erros podem acontecer, certo? Então, o que eu vou fazer é ter mais um estado aqui. Vou dizer const, vou dizer error e vou dizer set error, e vou dizer use State para null. Ok. Então, inicialmente, o erro é nulo. É um estado que estou criando aqui. Está bem? Como afirmei para carregar dados e erros. Tudo bem E o que vou fazer é aqui, eu tenho isso então, esse é o DN que é executado quando os dados são recebidos no formato JSN Ok, o que eu posso fazer é adicionar mais uma etapa aqui. Eu posso dizer pegar. Ok. Você pode dizer captura aqui, e eu posso dizer erro, detectar o erro e você pode realmente gerenciar o erro aqui. Está bem? Então, eu posso dizer console dot Log over here primeiro. Eu posso registrar o erro. Eu posso dizer, uh, ok. Deixe-me usar os modelos. Ok, então eu vou dizer erro ao buscar dados. Ok. E eu posso simplesmente ter as informações do erro aqui. Sendo preterido. Ok, isso está feito. Ok, eu perdi o ponto e vírgula, então vou adicionar um ponto e vírgula Ok. Vou diminuir um pouco o zoom. Então, isso é visível na visualização única. Então, eu tenho esse erro de ponto do console. Então eu posso dizer erro de configuração. Ok, defina o erro e posso atualizar o erro aqui. Posso atualizar as informações do erro no campo para buscar os dados Então essa é a mensagem que você quer mostrar para o usuário Estou configurando isso, ok? E eu estou dizendo que defina o carregamento para o de quedas, ok? Você também precisa atualizar o carregamento para cair aqui, porque inicialmente você definiu o carregamento como verdadeiro. Direto no efeito de uso. Está bem? Então, uma vez que os dados são carregados, você os configura para quedas e, quando há algum tipo de erro, você configura o carregamento como decrescente porque o carregamento acabou, certo? Então, você precisa atualizar o estado. Está bem? E precisamos exibir o erro para o usuário. Se você quiser, você pode exibir. Então, o que vou fazer é adicionar algo assim. Eu posso dizer se há um erro aqui. Vou exibir o erro. Vou simplesmente exibir o erro. Eu posso dizer erro, assim. Está bem? Agora, se você atualizar, você não receberá nenhum tipo de erro aqui, ok? Mas o que você pode fazer é, na verdade, criar um objeto de erro personalizado e você pode realmente lançar o objeto de erro e ver como o erro está acontecendo. Isso é algo que você pode fazer aqui. Ok. Então, uma vez que os dados estão sendo recuperados aqui, o que você pode fazer é dizer um novo erro ou dizer lançar um novo erro Você precisa lançar o erro, lançar um novo erro. Ok. Digamos que você tenha recebido esse erro ao passar o GSN Então você pode dizer: Opa. Então isso vai sair. Você pode dizer que algo deu errado. Algo deu errado, algo assim, e você pode salvar isso. Você pode ver uma falha na busca de dados, certo? Porque estamos lançando um erro personalizado aqui manualmente, tudo bem, para simular a situação de erro. Tudo bem E se você acessar o Console, deverá ver um erro sendo exibido. Você pode ver um erro ao buscar dados Algo deu errado neste slide Está bem? Você também pode ver a mensagem. Está bem? Agora você está fazendo o log de pontos do console. Você pode cometer o erro de pontos do console. Essa é uma boa prática por aqui. Quando se trata de erros de registro. Agora, se você atualizar, verá o redo sendo exibido em vermelho Certo? Então é assim que funciona, e está funcionando duas vezes porque estamos em um modo estrito, é claro Então, sim, é assim que você pode gerenciar o erro aqui. Está bem? Espero que isso esteja claro e forneça uma boa indicação de como você pode criar aplicativos fáceis de usar porque, você sabe, coisas como o EPI demorando para carregar ou as respostas demorando para serem renderizadas ou qualquer tipo de erro Todas essas são situações normais. Esses são todos os casos H que podem acontecer. E, claro, quando você cria aplicativos dinâmicos que consomem APIs, é importante saber como lidar com isso Tudo bem? Espero que isso seja útil e que isso lhe dê um bom conhecimento sobre como você pode trabalhar com APIs Então, sim, é só isso. Te vejo em breve. 7. Simplificando chamadas de API no React com o Axios: Olá, aí. Então, agora é hora de começarmos a falar sobre Axis. Agora, o que é Axis? O Axis é um cliente HTTP baseado em promessas para JavaScript. Está bem? Agora, quando digo JavaScript, significa que ele roda no navegador, no nodejs, no react e tudo mais. Tudo bem? Agora, este é o site oficial do axisxshttb.com, e você pode Uma simples biblioteca Axis de pesquisa do Google ou em qualquer lugar, como no Google ou em qualquer mecanismo de pesquisa favorito de sua escolha, você verá este primeiro link aqui, que é a introdução do documento HTDP da Axis Ok, então esta é a URL aqui. Se você acessar este site, verá alguns detalhes sobre o que é a Axis. E no lado direito, você pode ver um código que é uma demonstração de como a Axis funciona. É uma simples solicitação de obtenção que está sendo feita. Certo? Agora, axis e fetch, ambos são os métodos populares para fazer solicitações HTDP Mas há algumas razões pelas quais o acesso está sendo usado. O acesso é simples. Tem um conceito de interceptores, ok? Então, interceptores significam que se, por exemplo, se todas as chamadas de API em seu aplicativo também precisam ter um token OT ou algum tipo de cabeçalho consistente em todas as chamadas de API , o que você pode fazer é ter o conceito de interceptores em que você pode ter um tratamento centralizado desses São interceptores, ok? Então, sim, o acesso também é bastante popular com o Fetch. Portanto, o Fetch é uma forma embutida de fazer chamadas de API. O Access é uma biblioteca. Ok, então você vem aqui nesta página. Se você disser começar, será direcionado para esta página, onde verá alguns dos recursos do axis. Você pode ver ele tem uma maneira de interceptar solicitações e respostas usando interceptores Você pode fazer todo esse tipo de suporte à API prometida. Eu posso transformar dados de solicitação e resposta. Você também pode cancelar a solicitação. Há tempos limite. Está bem? Portanto, oferece um pouco mais de flexibilidade em comparação com a busca aqui Está bem? Você pode ver a configuração limites de largura de banda para a cadeira de nós Tratamento automático de JSN na resposta, ok, postando formulários HTML como JASN Tudo isso. Agora, isso não está disponível por padrão. Você precisa instalar este pacote NPM installed axis. Está bem? Se você estiver usando BR, você pode fazer uso disso. Então, para o NPM, isso é um comando para BoA, isso é um comando, e para Yarn isso é um comando, ok Há outras maneiras de usá-lo usando essas tags de script aqui. Está bem? Agora, se você der uma olhada no exemplo aqui no lado esquerdo, se você clicar neste botão de exemplo, você verá que é assim que você pode usá-lo. Está bem? Você pode ver que esse é o código para fazer uma solicitação get e lidar com a resposta, detectar o erro e, finalmente, ter também. Ok, o finally é sempre executado, independentemente de a solicitação ter sido bem-sucedida ou não OK. Então, isso é uma demonstração aqui. Vamos experimentar um exemplo prático aqui para eixo e veremos como podemos usá-lo em nosso projeto. Tudo bem? Eu tenho um projeto simples aqui, ok, onde o que estou fazendo é na verdade, ter uma chamada de API aqui usando fetch Ok, estou gerando um erro personalizado, que vou desativar. Então, se não houver erro, você verá, ok, então ainda estou vendo um erro aqui. Então eu fiz uma atualização completa, e funcionou, na verdade, ok? Então, acabei de comentar esse erro personalizado que eu estava gerando, e essa é a saída. Então você pode ver o estado de carregamento aqui, ok, carregando. E estamos gerenciando o carregamento e o erro aqui. Se houver algum tipo de erro, estamos exibindo isso. E estamos gerenciando todos esses três carregamentos de dados e erros com a ajuda de estados, e estamos usando o fetch aqui, ok? Agora vamos transformar essa coisa, eu diria em eixo. Agora, a primeira coisa que precisamos é acessar um terminal, então vá até o terminal aqui. OK. Isso fornecerá um terminal no diretório de trabalho atual. Assim, você pode digitar PWD e ver onde está. Na verdade, estou no meu projeto aqui. OK. Eu vou dizer claro. E agora você podia ver esse comando aqui, onde dizia: É assim que você pode instalar o eixo. Vou copiar esse comando porque estou usando o NPM E vou passar isso aqui. OK. Agora, isso adicionará o NPS. Desculpe, isso adicionará eixo ao meu aplicativo aqui. Está bem? Portanto, foi adicionado com sucesso. OK. E o que eu faria é que você pudesse confirmar isso indo até o pacote dot Hans aqui, e eu vou experimentar este terminal aqui. Você pode ver que o eixo foi adicionado como dependência, ok? Então, sim, isso foi feito e o eixo agora está disponível para nosso uso. Agora, a primeira coisa, se você estiver usando o eixo, também precisará importá-lo. Então, adicionarei uma declaração de importação na parte superior. Eu vou dizer que o eixo de importação e ele é sugerido automaticamente e concluído automaticamente Está bem? Então, estamos obtendo essa instância do eixo aqui. Agora, o que precisamos fazer é, em vez de buscar, transformar isso em eixo, certo? Então, em vez de vir até aqui, está bem? Eu vou dizer eixo. Tot, venha aqui. Está bem? Isso é o que é. Está bem? Eu direi então, responda. E quando a melhor coisa está aqui, estamos convertendo a resposta para JCN Com a Axis, você não precisa fazer isso. Ok, você recebe a resposta como a própria JSN. Então, se você vier aqui, verá um dos recursos de tratamento automático de dados da JCN na resposta, certo? Então isso é uma coisa boa. Então, aqui, esse único passo desaparecerá, ok? Isso vai sumir por aqui. Aqui, em vez de Chasin, podemos simplesmente renomear essas duas respostas Eu poderia dizer uma resposta, algo assim. Eu vou dizer definir dados. Definir dados é resposta. Agora, essa resposta é, na verdade ter essa resposta como um objeto e tem um atributo de dados. Você precisa acessá-lo dessa forma, dados de pontos de resposta. Está bem? E você também pode fazer um registro do console para responder e ver o que ele imprime. Eu só vou fazer isso. Registro e resposta do console aqui. OK. Verificaremos os registros do console em breve, ok? Mas é assim que funciona e você pode definir as dobras de carregamento. Você tem uma pegadinha em que está detectando o erro, e o resto das coisas são as mesmas aqui, ok? E, sim, acho que deve funcionar perfeitamente bem. Vou guardar isso e vou fazer algo difícil ou fresco. OK. Você está vendo a saída. Agora, se você for até o console, veremos, então deixe-me ir até o console, deixe-me diminuir um pouco o zoom. OK. OK. Então, tudo bem. Agora aqui, se você ver se eu expandir isso, ok, você pode ver o objeto sendo impresso, ok? Ou deixe-me passar para a tela cheia, tudo bem, seria melhor lá. Está bem? Então essa é a saída aqui. Está bem? Deixe-me ir inspecionar. Agora diga Console. Agora, você pode ver o objeto sendo impresso. Agora, este é o objeto, ok, que obtemos Este é um objeto de resposta, na verdade, certo? E isso tem dados. Você pode ver esses dados. Então, se você quiser acessar os dados da API que você tem, você pode realmente dizer dados de pontos de resposta. Ok, é assim que ele gerencia isso, e cabeçalhos são basicamente os cabeçalhos que você tem alguns dados de configuração Está bem? Você tem algumas informações relacionadas à solicitação. Você tem status. Então, se você quiser acessar o status, qual é o status da solicitação ou resposta? Você pode dizer o status do ponto de resposta. Você pode lidar com isso dessa maneira. Está bem? Então, sim, o objetivo é mostrar a aparência dos dados de resposta se você estiver usando o Axis e precisar usar os dados de pontos de resposta aqui. Está bem? Então, sim, é assim que você pode começar a usar o eixo. E espero que isso esteja bem claro. Você também pode lidar com o erro dessa forma, se desejar, você pode ver, falhar na busca de dados E se você vier aqui, ok, você verá um erro ao buscar dados, algo deu errado Está bem? Essa é a mensagem de erro que passamos. Está bem? Você pode ver que algo deu errado, certo? Então é assim que as coisas funcionariam. Vou apenas comentar isso, ok. Mas sim, este é o eixo para você e espero que você esteja bem claro sobre o que é eixo e como você pode usá-lo. 8. Executando várias solicitações GET simultaneamente: Então, vamos começar a falar sobre como você pode acionar várias solicitações Get com eixo, ok? Então, aqui estamos usando o eixo para acionar esse ponto final Ok, esse é o ponto final do post. E se você vier aqui, ok, este é o espaço reservado de Jason dotpco.com E aqui, estou acionando esse primeiro endpoint. Quero acionar mais um endpoint, digamos, usuário, vou abrir isso em uma guia separada e você pode ver que esses são os dados que eu devo obter Ok, então digamos que eu queira acionar essa chamada de API também. Como eu faria isso? Está bem? Então, aqui, o que faremos é aqui, eu vou dizer ponto do eixo tudo em vez do ponto do eixo Get, ok? Ou podemos manter o eixo dot Get e teremos que mover essa chamada Get para o eixo ponto O. Ok ? Então, ponto do eixo O, algo assim. Agora, o que o ponto do eixo O faz é aceitar uma matriz, ok? E eu vou cortar isso aqui, cortar isso. E eu vou mover isso dentro dessa matriz aqui. Está bem? Então, deixe-me alinhar isso um pouco melhor OK. Deixe-me alinhar isso Bem, ok, temos isso aqui. OK. E então você tem então aqui, que também estava lá no início. Está bem? Mas agora você está fazendo essa única chamada de EPI aqui O que vou fazer é copiar isso. Vou adicionar uma vírgula aqui. No final das contas. Vou adicionar mais uma chamada de EPI, copiar esse endpoint do usuário aqui e substituir essa segunda chamada pelo endpoint do usuário, algo assim Agora você pode ver o ponto do eixo O. Vou apenas diminuir o zoom, o ponto do eixo O aqui, e estamos fazendo duas chamadas de EPI separadas, como você pode ver Tudo bem, vou estender isso. Então você pode ver que é assim que está indo, ok? Agora, o que faríamos é fazer isso antes, e de vez em quando temos uma resposta, ok? Então, agora precisamos ter uma maneira de lidar com a resposta de ambos separadamente, ok? E para isso, usaremos a dispersão de pontos no eixo. Você pode ver a dispersão dos pontos do eixo. Está bem? O que é a dispersão de pontos no eixo? Então, função de propagação de pontos do eixo. Então, a propagação é uma função que permite que as respostas sejam tratadas separadamente, ok? Agora podemos passar a postagem e os usuários como um parâmetro para corresponder às respostas da postagem e dos pontos finais dos usuários separadamente. Deixe-me mostrar isso para você como você pode fazer. Então, aqui, em vez da resposta, vou me livrar da resposta aqui, e podemos ver aqui, postar Ok e os usuários. Está bem? Isso é algo que você pode fazer aqui. Você verá todas as marcas vermelhas aqui, é claro, porque você está fazendo uso da resposta e a resposta não existe Então, vou pegar essa postagem aqui e vou substituir a resposta pela postagem, algo assim. Ainda estou vendo uma marca vermelha aqui. Ok, eu entendi. Então, espalhe, basicamente, tudo isso tem que estar dentro do spread. Está bem? Então, algo assim. Então, sim. Espero que isso esteja fazendo sentido. Então, aqui, Spread está levando tudo isso para cá, ok? E você tem postagens e usuários aqui. Está bem? A postagem é basicamente a resposta da postagem, e o usuário é basicamente a resposta do endpoint do usuário aqui. Está bem? E o spread nos permite lidar com esses dois separadamente, ok? Então, estou logando na postagem aqui. Também vou registrar as informações do usuário aqui. OK. Deixe-me dizer usuário Ok, usuários. Deixe-me salvar isso. Você pode ver que a postagem está funcionando perfeitamente bem. Está bem? Realmente ótimo. Vou até lá para inspecionar, ou deixe-me fechar essa inspeção Não aqui, mas terei essa visualização em tela cheia e atualizaremos Você pode ver a postagem sendo exibida. Eu posso inspecionar, console. Você pode ver o objeto sendo impresso quatro vezes, porque cada objeto está sendo impresso duas vezes devido ao modo estrito. Então aqui você está vendo esses dados aqui. Esses são os dados da postagem. Está bem? Essa é a primeira coisa, publique dados. E então temos os dados da postagem novamente. Ok, então isso é um dado do usuário, você pode ver. Essa é uma informação do usuário que está sendo buscada. Esses são os dados da postagem novamente, 100 e essas são as informações do usuário, novamente, que são dez usuários, certo? Então, sim, é assim que você pode lidar e trabalhar com várias chamadas de API. E esse é um dos recursos ou uma das flexibilidades que a Axis nos oferece. Está bem? Você tem esses dois dados. O que você pode fazer é decidir o que quer fazer. Você pode armazenar as informações relacionadas à postagem em um estado, armazenar as informações relacionadas ao usuário em outro estado e exibi-las aqui. Você também pode renderizá-lo na interface do usuário. Está bem? Mas sim, até agora tudo bem, podemos fazer várias chamadas de API com a ajuda da Axis, e espero que isso esteja bem claro para todos vocês. 9. Enviando dados com solicitações POST no Axios: Então, agora é hora de começarmos a falar sobre como você pode usar a solicitação post em seu aplicativo react? E para isso, aqui no Jason Please holder, se você rolar para baixo. Ok, aqui você encontrará esse EPI ou esse endpoint aqui, que permite fazer uma solicitação de postagem Está bem? Então, no slash Post, se você fizer uma solicitação de postagem, tudo bem, ele a aceitará E aqui você tem um guia para um exemplo de uso. Então, vou até o guia de exemplos de uso e vou rolar para baixo até aqui. Ok, você pode ver esse exemplo aqui, ok? Então, criando um recurso, ok? Então, o que ele vai fazer é fazer uma solicitação de postagem. Você pode ver que o método é postado. Esse é o corpo que você está enviando, os cabeçalhos, e é assim que você gerencia a resposta Agora, a resposta que você receber, ok, você receberá o que enviou, junto com o ID aqui. aqui, essa é uma API falsa, então o recurso não será realmente atualizado no servidor, mas será falso como se fosse. OK. Então, o que faremos aqui é que eu virei aqui. OK. E aqui, o que precisamos é de um formulário. Então, aqui, vou criar um formulário, vou dizer formulário, algo assim, e o formulário não terá nada. Vou ter apenas um botão que apenas acionará uma solicitação de postagem. Então eu vou dizer tipo de botão, vou dizer enviar aqui. Ok, e eu vou dizer adicionar postagem, algo assim. Está bem? Você tem esse botão aqui, ok? Agora, ao clicar aqui, queremos que a solicitação de postagem seja acionada. Está bem? Então, vou dizer sobre o envio aqui no envio. Agora eu preciso adicionar uma função. Preciso vincular isso a uma função, então vou dizer handle, submit. OK. Isso ainda não existe. Claro, precisamos criar isso, certo? Então, aqui, o que vou fazer é criar essa função const on submit Está bem? Então, vou dizer const ao enviar Algo parecido com isso. Oh, desculpe, não envie, manipule o envio. Não está no nome de envio e envio, algo assim. Eu vou dizer evento. Então, ele aceitará o evento aqui, e eu tenho essa definição de função aqui, algo assim. OK. Tudo bem, agora eu preciso da lógica aqui para basicamente lidar com a solicitação de postagem Está bem? Então, o que eu vou fazer é primeiro criar uma nova postagem, ok? Agora, quais são os dados que eu preciso enviar são o corpo do título e o ID do usuário. Isso é o que eu preciso enviar, certo? Então eu vou copiar isso e eu vou vir aqui, ok. E aqui, vou dizer const, nova postagem, e vou criar uma postagem, menos assim. Está bem? OK. Vou manter isso em várias linhas. Está tudo bem. Ok, algo assim. Ok, então esse é o post. Isso é o que eu diria. Esse é o objeto que eu quero postar, certo? Portanto, o título é fu, o corpo é bar e o ID do usuário é um. Está bem? Agora, o que podemos fazer aqui é isso: depois que isso for criado, terei um eixo sendo usado. Então, adicionarei um eixo e você poderá ver a seção de importação sendo adicionada na parte superior Então, vamos fazer uso do eixo. Eu vou dizer axis dot Post. OK. E a postagem é um método que usaremos. Preciso passar a URL aqui e, em seguida, preciso usá-la para lidar com a resposta. Opa. Então, para lidar com a resposta, algo assim. OK. Então aqui, o que eu faria é precisar do Ok, eu preciso fechar isso também aqui. OK. E eu vou me livrar desse suporte aberto. Ok, fechando o suporte. Então, dentro da postagem, preciso passar a URL e o novo objeto da postagem. Então eu vou vir aqui. Esse é o novo objeto da postagem. OK. Então, vou mencionar isso aqui. E no final, vou dizer uma nova postagem com vírgula. Então esse é o objeto que estou passando. Ok, algo assim. Deixe-me ver isso em tela cheia. Tudo bem. Vou usar tela cheia para que você veja tudo. OK. Você pode ver o poste de pontos do eixo aqui, e eu estou passando o novo objeto poste, junto com isso. E agora, então, o que eu preciso é dizer resposta, ok, função de seta. E aqui, agora preciso lidar com a resposta. Está bem? Como estou lidando com a resposta? Vou apenas dizer que o log de pontos do console está aqui, ok? E eu vou dizer que uma nova postagem foi adicionada. Algo assim, e vou dizer apenas dados de pontos de resposta. Está bem? Gostar. Ok, então eu vou dizer definir dados, opa Ok, então os dados do conjunto não existem. Precisamos adicionar um estado aqui. Está bem? Então, o que vou fazer é dizer const data e vou dizer set data Vou fazer uso do estado de uso aqui. OK. E aqui, o que faremos é chamar dados do conjunto, algo assim. E aqui, eu vou dizer a resposta. Coloque pontos nos dados e vírgulas e eu vou desestruturar os dados, algo assim. Tudo bem. Então isso está feito, eu acho, tudo bem. Sem problemas como tal. E sim, o identificador de envio também está vinculado a isso. OK. Então, agora deixe-me minimizar isso. E aqui, vou fazer uma atualização, uma atualização rápida. abriremos o console para ver qual saída obtemos. E eu vou dizer para adicionar uma postagem aqui. OK. No momento em que digo no post, opa, não estou vendo nada Ok, então eu também preciso dizer ponto E, evitar evitar o padrão, evitar o padrão. Então eu preciso dizer isso, e agora vamos tentar isso. OK. Então, vou dizer postagem publicitária. Opa Então, diz que os dados não são iteráveis. Também estou recebendo um erro aqui na linha 16 aqui. Está bem? Portanto, o problema são os dados dos pontos de resposta, e eu estou desestruturando os dados Está bem? Então, isso está gerando um erro e o erro é uma promessa não codificada. Os dados não são irtratáveis. Então, o que eu faria é me livrar dessa coisa aqui, isso. OK. E eu vou guardar isso. Deixe-me fazer uma atualização. OK. Então, eu me livrei dessa parte aqui. OK. Agora isso é bem simples. Vou dizer adicionar postagem e você poderá ver, ok, a postagem que está sendo adicionada e qual postagem está sendo adicionada e que também está sendo exibida aqui. Tudo bem. Então, sim, é assim que uma solicitação de postagem funcionaria quando você está trabalhando com a Axis. Está bem? É bem simples Vou usar a tela cheia para que você tenha uma visão melhor. Vou ampliar um pouco. OK. Estamos fazendo uso. É aqui que está o ponto crucial, ok? Então você diz axis dot post, especifica a URL e o objeto que você deseja publicar. Está bem? E então você tem o tratamento aqui, e você lida com a resposta que você recebe. Tudo bem. Então, sim, isso é sobre a solicitação de postagem com eixo. Espero que tenha sido útil e espero que você tenha conseguido acompanhar. 10. Otimizando a segurança de API com Interceptors Axios: Então, agora é hora de começarmos a falar sobre interceptores e entender o que eles são Agora aqui, eu tenho um exemplo já escrito, onde eu tenho esse cabeçalho e um botão para adicionar um post, ok? E quando eu clico em Adicionar postagem, ele faz uma solicitação de postagem para um servidor remoto, e você pode ver os dados sendo postados no console. Após a resposta bem-sucedida da solicitação de postagem, tudo bem? E você verá isso acontecendo várias vezes. OK. Estamos usando essa API falsa aqui, que é o espaço reservado para Jason, e se você rolar para baixo, estou usando a API de postagem aqui Essa é uma delas, ok? Voltando ao código aqui, está bem? Essa é a base do código. Agora, o que são interceptores e por que você precisa deles? Está bem? Agora, os interceptores são coisas com eixos que permitem executar código personalizado ou interceptar a solicitação, antes que ela seja tratada até então ou capturada Espero que isso esteja fazendo sentido. Então, os interceptores não são nada, mas permitem que você intercepte a solicitação antes que sejam aceitos ou detectados, ok Agora, por que você quer fazer isso? Portanto, talvez você queira ter algum tipo de código personalizado para executar antes do envio de uma solicitação ou após o recebimento de uma resposta. Está bem? Agora, o código personalizado pode envolver coisas como adicionar um token de autenticação ou qualquer coisa desse tipo, ok? Então, nesse caso, esse conceito de interceptores entra em cena, certo? Então, deixe-me dar uma demonstração de como você pode usá-lo. Está bem? Então, aqui no topo, digamos, eu vou ter um interceptor Eu vou dizer eixo tot eu vou dizer interceptores. Você pode ver o interceptor de propriedades e solicitar que use Está bem? Então você tem utilidade aqui, ok? Agora, dentro do uso, o que você faria é, isso é o que vamos usar. Por aqui, vou ter a função de seta. Eu vou dizer pedido. Está bem? Para cada solicitação, você me dá um registro do console, ok? O log do console deve estar iniciando a solicitação, ok? Algo parecido com isso. OK. Agora vou guardar isso, ok? Agora, se eu vier aqui, se eu abrir o console, deixe-me limpar o console. Deixe-me fazer uma atualização. OK. Agora, se eu disser adicionar postagem, você verá a solicitação inicial. Opa, há algum erro aqui. Está bem? O erro diz que não foi capturado na promessa, erro de tipo, ok? Então eu recebi o erro. O erro é que temos que retornar a solicitação aqui. Está bem? Isso é um erro que eu cometi. Se você vier aqui, se você atualizar, limpar, e se eu disser na postagem, você verá a solicitação inicial de nova postagem adicionada, ok? Então lembre-se de devolver isso aqui. Está bem? Então, sim, isso será interceptado e impresso para cada solicitação aqui Você pode ver. Para cada solicitação, você está vendo uma solicitação inicial, certo? Você tem acesso ao objeto de solicitação que pode imprimir aqui. Então, eu posso fazer o pedido aqui. OK. Se eu vier aqui, eu atualizo, se eu disser adicionar postagem, você pode ver que tenho acesso a todo o objeto de solicitação aqui Posso adicionar ou remover qualquer tipo de cabeçalho personalizado que eu quiser Está bem? Então, posso dizer que solicite cabeçalhos de pontos, posso usá-los dessa forma e personalizar Eu posso adicionar Eu posso adicionar qualquer tipo de token. Então, por exemplo, se algum tipo de solicitação for autenticada, certo, talvez você precise passar o token do armazenamento local, certo? Agora, onde quer que você esteja usando a Axis, seria muito complicado fazer isso, Assim, você pode ter um interceptor definido. Globalmente. E sempre que alguma solicitação está sendo acionada para o servidor, você pode ter uma lógica aqui em você acessa o armazenamento local, obtém o token que deseja passar para o servidor e pode formatá-lo aqui e adicioná-lo ao cabeçalho Assim, você pode definir cabeçalhos de pontos de solicitação, adicionar o token e mantê-lo lá Então, o que aconteceria é que para cada solicitação, o token é adicionado porque isso é padrão, certo? O servidor precisa disso. Assim, você não precisa replicar esse código em todos os lugares É assim que isso ajuda, ok? E isso é um interceptor de solicitações. Eu tenho um interceptor de resposta que eu quero te mostrar também Está bem? Então, interceptores de pontos do eixo , ponto, seria uma resposta, se você acertar Você tem que dizer use aqui. Opa, vamos dizer use, e vamos fazer uso disso, ok? E aqui você verá a resposta, e você pode ter algo assim. Você fará um registro do console aqui. OK. Você pode dizer a resposta. OK. Opa. E aqui, você pode dizer a resposta. Assim. OK. E aqui, retorne a resposta. Algo W. Tudo bem. Então, isso é para cada resposta, você também tem acesso à resposta. Está bem? Então, deixe-me atualizar. Claro. Eu vou dizer adicionar postagem. Você pode ver a solicitação inicial. Você tem o objeto da solicitação, a resposta, dados da resposta e, em seguida, está vendo isso sendo impresso. Agora, de onde isso está sendo impresso? Isso está sendo impresso a partir de então por aqui. Você pode ver. Então essa coisa foi executada no final. Está bem? O que isso significa é? Isso significa que o interceptor é chamado primeiro sempre que a resposta é recebida e, em seguida, os dados são processados Você pode ver aqui. Portanto, essa parte é executada primeiro sempre que a resposta é recebida e essa parte é executada antes que os dados sejam enviados ao servidor. Está bem? Então, espero que esse conceito de interceptor esteja claro e espero que você tenha uma boa compreensão de como isso funciona Você pode brincar com isso e dar uma olhada nos dados que estão sendo interceptados, e espero que tenha sido esclarecedor 11. Construindo instâncias personalizadas do Axios para melhor controle: Oi, aí. Então, agora é hora de começarmos a falar sobre a instância de eixo personalizada. Agora, o que é uma instância de eixo personalizada? Então, aqui estamos fazendo uso do eixo, ok? Mas com o axis, você pode criar uma instância de acesso personalizada que é versão pré-configurada do axis para seu aplicativo E ao criá-lo, você pode definir opções padrão, como cabeçalhos de URL base, qualquer tipo de cabeçalho padrão necessário, qualquer tipo de configuração de tempo limite que você deseja que a solicitação em seu aplicativo Então, todos esses tipos de configurações globais, você pode, com a instância de eixo personalizada e cada chamada de API que todo o aplicativo fará em todos os componentes usar essa instância de eixo personalizada, certo? Então, por exemplo, deixe-me dar um cenário. Então aqui você tem essa solicitação de postagem. Talvez eu tenha mais uma solicitação Get aqui neste mesmo componente. Agora, eu posso ter milhares de componentes, certo? Centenas de componentes, digamos , nesse caso específico, digamos que pelo menos 50 componentes tenham chamadas de API. Certo? Então, se eles tiverem chamadas de EPI, você repetirá todo esse URL ali Está bem? Isso não é bom, ok, porque amanhã, se a URL do servidor mudar, não será bom. Se algum tipo de parâmetro mudar, ok, você tem que fazer alterações em todos os arquivos lá. Está bem? É melhor ter todo o código comum relacionado à configuração em um arquivo para que, se houver algum tipo de alteração, você possa alterá-lo em um só lugar e, em seguida, tudo seja propagado, certo? Então é aqui que a instância de acesso personalizado entra em cena. Então, para criar uma instância de acesso personalizada, vou mostrar como ela funcionará, ok? Então, aqui estamos fazendo um post EPI. O que podemos fazer é dizer const API. Você pode chamar isso do que quiser, mas eu gosto de chamá-lo de API. Você pode dizer eixo, ponto, criar aqui. Está bem? É assim que estamos criando a instância do eixo personalizado e, dentro disso, você pode ter toda a configuração definida. Tudo bem? Agora, todas as configurações que você pode ter aqui. Está bem? Então, por exemplo, aqui para essa coisa, o que eu posso fazer é conseguir isso. Eu cortei isso e aqui, vou dizer p URL. Você pode ver o PacerL. Você pode dizer dois pontos, eu posso adicionar uma PRL aqui, algo assim Está bem? Opa. Então, sem calafrios, eu quero isso OK. Esse é o URL base para todas as solicitações de API. Está bem? Então eu posso ter cabeçalhos aqui. Você pode ver essa propriedade de cabeçalhos. Posso dizer nos cabeçalhos que quero que os cabeçalhos padrão aqui sejam como todos os cabeçalhos padrão que você pode ter Então, digamos que eu queira ter autorização aqui, ok e eu gostaria de ter, digamos, portador e você pode adicionar algum token aqui, ok? Então, qualquer token que você tenha, você pode adicioná-lo. Ok, e enviado é enviado junto com a API, ok? Você definiu isso. Como você faz uso disso? Está bem? Então, o que você pode fazer aqui é, em vez de usar o axis dot post aqui, você pode dizer API, algo assim , api dot post, e isso vai funcionar, vai usar isso como BCRL e vai garantir que esses cabeçalhos estejam presentes, Se eu salvar isso e você vier aqui, Ok, eu tenho esse aplicativo instalado e funcionando. Ok, você tem esse botão aqui, que acionará uma solicitação de postagem. Agora, se eu disser adicionar postagem, ok, você pode ver uma nova postagem sendo adicionada. Tudo bem. Portanto, não estou vendo que isso está funcionando bem, mas não estou vendo a solicitação sendo impressa aqui. Está bem? Então isso é algo que eu posso imprimir. Está bem? Deixe-me imprimir isso também, ok? Então, para imprimir a solicitação, o que vou fazer é adicionar uma interceptação aqui, ok? Então, adicionamos interceptores dessa forma, eixo, interceptores, solicitação de pontos, uso de Tt aqui, algo assim Está bem? É assim que você normalmente adiciona interceptores OK. Mas como estamos usando instância de eixo personalizada, o que você pode fazer é, em vez do eixo aqui, dizer interceptores de pontos de API Está bem? Isso é o que você vai fazer. Tudo bem. E aqui, você vai dizer pedido aqui. OK. E aqui, você precisa imprimir a solicitação. Vou dizer que o log de pontos do console está aqui. Eu vou dizer pedido inicial. OK. Solicitação inicial. Por aqui. E você pode adicionar o objeto de solicitação aqui, algo assim. Está bem? Isso está feito. Agora, se você vier aqui, ok, deixe-me fazer uma atualização. Se eu disser adicionar postagem, opa, então eu conheço esse erro Tudo bem. Eu preciso devolver a solicitação também, ok? Solicitação de devolução. OK. Agora deve funcionar bem. Uma atualização de fogo. Se eu disser publicação de anúncio, você verá a solicitação sendo impressa. Agora, se você expandir isso, verá que, quando a solicitação foi enviada, há um cabeçalho de autorização. Este é o cabeçalho de autorização que adicionamos por meio da instância de eixo personalizada aqui que está sendo adicionado e enviado ao servidor. Você pode ter qualquer tipo de lógica aqui em que você busca, você sabe, algum tipo de token e tudo isso, você pode exibir isso, ok Então, isso é muito útil de certa forma, certo? E, sim, isso é o que é. É assim que você pode realmente ter uma configuração separada do seu código. Agora, eu gostaria de esclarecer quando você deve usar a instância de eixo personalizada e quando você deve usar interceptores, ok? Então, digamos que, se você estiver enviando um token, tudo bem, você também pode adicionar uma configuração de token aqui na instância do eixo personalizado e também pode adicionar um token aqui no interceptor Portanto, sempre que a solicitação estiver sendo enviada ao servidor, pouco antes de ser enviada, você pode adicionar um token aqui. Está bem? Então, quando usar qual método, certo? Agora, se seu token ou configuração for estático, qualquer tipo de configuração que seja estática, ok, e não exija uma alteração , você pode adicionar essa configuração à instância personalizada do eixo aqui. Está bem? Por exemplo, você pode ter um tipo de código ou um tipo de cabeçalho que talvez queira passar aqui, que diz tipo de conteúdo. Ok, então você pode dizer o tipo de conteúdo aqui. Então, esse cabeçalho de tipo de conteúdo, ok, isso significa aplicativo JSN OK. Então, esse tipo de cabeçalho que é estático, basicamente, pode ir para a instância de acesso personalizada Mas existem requisitos em que você pode ter cabeçalhos dinâmicos Agora, o que quero dizer com cabeçalhos dinâmicos é que, digamos que você queira adicionar um cabeçalho, ok, que contém o token obtido do armazenamento local Agora, o token de armazenamento local pode ser atualizado de tempos em tempos Pode ter uma expiração. Não é estático. Pode não ser estático, ok? Então, nesse caso, pouco antes de a solicitação ser enviada, talvez você queira executar um trecho de código para verificar o que é um token, obter esse token e enviá-lo junto com a solicitação, ok? Portanto, nesse cenário, você usará os cabeçalhos adicionados ao interceptor porque isso não é estático Isso é dinâmico, certo? E pouco antes de a solicitação ser enviada, você quer que a verificação do token seja feita, ok? Então é aqui que os interceptores podem entrar em uso, certo? Tratamento automático de erros. Portanto, os interceptores são excelentes para lidar globalmente com respostas a erros. Está bem? Portanto, se sua resposta EPI indicar que um token expirou, por exemplo, 401 Um interceptor pode ter o token de atualização automaticamente. Ok, eu deveria ter o código para atualizar o token automaticamente e repetir a solicitação Então, aqui estamos tendo o interceptor de solicitações. Você pode ter um interceptor de resposta, no qual você pode verificar se o erro foi Se foi 401, basta ter o código para atualizar o token e OK. Então, isso é algo que você não pode fazer com a instância de eixo personalizada aqui, certo? Porque isso é estático, certo? E, sim, essa é a diferença entre a instância personalizada do eixo e o conceito de interceptor Está bem? Pode parecer que muitos dos meus alunos acham que há uma sobreposição no conceito, mas ambos são distintos Isso é o que estou tentando destacar. Tudo bem? Então, espero que tenha sido esclarecedor e espero que você tenha conseguido acompanhar Tudo bem, eu vou ver todos vocês assim. 12. Supercarregando instâncias personalizadas do Axios com interceptores: Então, agora o que faríamos é desenvolver ainda mais essa instância de eixo personalizada. Está bem? E o que eu faria é, antes de tudo, mover isso para um arquivo separado. Está bem? Portanto, esse código pode se tornar um pouco complexo. Então, o que eu faria é cortar isso aqui. Eu acessava a estrutura do meu projeto e criava uma pasta aqui. Eu chamaria essa pasta como você pode chamar essa pasta de API. Você pode chamar isso de Utils, algo parecido. OK. E aqui, você pode ter api dot has. E aqui, você pode colar todo esse código. OK. E então isso é necessário aqui, eixo de importação. Então, isso é algo que vou mover aqui neste arquivo. OK. E precisamos exportar a API. Então, vou dizer exportar ou padrão, e vou dizer API aqui. Ok, algo parecido com isso. Tudo bem. Isso está feito. Ok, a API é exportada E agora que estamos aqui, o que precisamos fazer é inserir essa API. Então, eu posso inserir isso. OK. Você pode ver a API Utils, ok? Ok, então, por algum motivo, não estou gostando do nome da pasta Utils, então vou mudar isso para API também OK. E eu vou atualizar as entradas, certo? Então, sim, agora está parecendo bom. Então, o que eu fiz foi ter essa pasta EPI dentro da qual organizei meus pat E o que é pi dot Gs? Ele consiste em toda a configuração junto com os interceptores da instância personalizada do eixo aqui Está bem? E você pode usar isso onde quiser. Está bem? Então é assim que estamos usando isso. E se você vier aqui e eu atualizar, ok, se você disser no Post, verá que está funcionando perfeitamente bem Ok, então isso tornou nosso código um pouco mais modular. Certo. Agora, o que podemos fazer é melhorar isso aqui. Está bem? Então, estamos passando esse cabeçalho. OK. Vou me livrar dessa coisa simbólica aqui. OK. Digamos que temos o conceito de token dinâmico aqui, certo? Então, o que podemos fazer é aqui, eu tenho esse pedido. Está bem? Estou comendo isso. E aqui, eu posso adicionar mais uma função. Eu posso dizer Cfico, algo assim, e vou adicionar uma função de seta assim OK. E aqui, eu posso dizer const token OK. Eu posso obter o token, armazenamento local, ponto Obter item. Estou recebendo o token do meu armazenamento local, então vou dizer token aqui. OK. E então eu posso realmente dizer se o token for encontrado, se o token, então o que você faria? Então você diria config tot headers. Portanto, você pode chamá-lo de config ou request. Isso é absolutamente bom. Então, aqui estou chamando isso de solicitação, então estou chamando de configuração aqui Está bem? Então, eu estou dizendo config dot headers dot authorization Sessão, o é igual a. Eu posso adicionar um token de emparelhamento. Então, posso dizer, pairero, preciso adicioná-lo neste formato. Eu posso dizer token. Algo parecido com isso. Tudo bem. Então, o token será adicionado somente se o token for encontrado, certo? Se o token não for encontrado no armazenamento local, ele será mantido. OK. Então isso seria feito. E se você vier aqui, ok? Então, à toa, o token não será adicionado porque não há armazenamento local no momento, ok? Então não é arte, certo? Não é difícil nos cabeçalhos. Deixe-nos ver. Não é adicionar. Você pode ver porque eu não tenho nada armazenado no armazenamento local para este aplicativo no momento. Mas se você tiver, se estiver armazenando, você o receberá e poderá enviá-lo aqui. Está bem? Agora, aqui, isso está feito. O que eu posso fazer é até mesmo lidar, posso até mesmo adicionar algum tipo de tratamento de erros aqui. Então eu posso dizer erro. Algo assim, e eu posso dizer, opa, então eu posso dizer Console dot error OK. E aqui, eu posso dizer erro de solicitação, erro solicitação, e em nosso espaço, você pode dizer erro. Tudo bem. E você pode dizer devolver, prometer, não rejeitar. Estou lidando com a rejeição dos erros da solicitação. Oh, tudo bem. Eu vou dizer erros. Ok, algo parecido com isso. OK. O que estou fazendo é lidar com o erro de solicitação usando isso, ok. E essa é uma maneira, ok. Em seguida, você pode até adicionar o interceptor de resposta. Isso é tudo sobre o interceptor de solicitações, até aqui. O que posso fazer aqui é dizer resposta de pontos EPI. Oh, 1 segundo. Interceptores de pontos pi resposta de pontos, interceptores de pontos p resposta de pontos, ponto U.Isso é o que é Tudo bem. E agora, dentro disso, precisamos adicionar a função de seta. Então, o que faríamos é dizer resposta, algo assim. OK. E você pode adicionar algum tipo de manipulação aqui. Está bem? Agora, o tratamento que adicionaríamos é que podemos dizer que, se a resposta for bem-sucedida, retornaríamos apenas os dados. Então eu respondo e devolvo os dados, certo? Então, vamos dizer Ok, eu respondo, isso já está escrito. Então, se for resposta, retorne a resposta. Ok, então eu não estou adicionando lógica aqui. Basicamente, você pode ter sua própria lógica. Mas é assim que você lidaria com isso aqui. Esse é o propósito, ok? Assim, você pode ter sucesso, verifique aqui a resposta e depois devolva a Tita. Está bem? Então, você está retornando a resposta essencialmente. Está bem? Se houver algum erro, como você lidaria com isso? OK. Então, aqui, você pode simplesmente vir e dizer, ok, deixe-me adicionar uma aba aqui. OK. E agora você pode dizer aqui, erro. OK. Então isso é erro, e então você pode dizer assim. E aqui, você pode dizer se eu posso dizer erro ponto resposta. OK. Por isso, estou verificando expiração do token e quaisquer outros erros em todo o mundo. Está bem? Então, eu posso dizer erro, ponto, resposta, status do ponto aqui. Opa, o status está aqui. E se for igual a 401, ok, você pode adicionar qualquer tipo de, você sabe, qualquer tipo de manipulação aqui Você pode dizer erro de ponto do console, algo desse tipo, e dizer não autorizado Algo parecido com isso. OK. Você pode lidar com isso aqui e também adicionar a lógica de nova tentativa, dependendo do tipo de erro que você está recebendo OK. Se você está recebendo o erro 500, ok, como erro interno do servidor ou algo parecido, então você pode adicionar mais um aqui e dizer mais um cheque. Você pode dizer se o erro é 500. Ok, então você pode dizer erro do servidor. Então, basicamente, estou apenas fazendo um registro aqui, mas você pode lidar com isso da maneira que quiser, ok? Vou adicionar ponto e vírgula Ok, e vou adicionar colchetes redondos aqui. OK. Então, acho que está bem claro como isso pode ajudar aqui. OK. E uma vez feito isso, ok, tudo isso está feito, eu posso dizer return promise dot check aqui, e eu posso dizer erro. Tudo bem. Então, basicamente, você está rejeitando outros erros Tudo bem. Então, sim, é assim que você pode continuar desenvolvendo a instância personalizada do eixo. E essa pode ser a API personalizada que tem os pits personalizados, que tem a configuração global para as solicitações de API que você está fazendo, incluindo os baseUrls Então, se você está obtendo os URLs básicos do arquivo ENV, você também pode ter essa lógica aqui, ok E você pode gerenciá-lo separadamente do arquivo ENV. Está bem? Cabeçalhos amanhã, se algum novo cabeçalho estiver sendo adicionado, ok Então lembre-se, aqui, você não está codificando o URL, você não está codificando os cabeçalhos Você está apenas usando a API e toda a lógica relacionada ao componente que está aqui, ok? Somente a lógica relacionada ao componente está aqui, nada mais. Amanhã, se alguma coisa mudar na API, se algum cabeçalho for necessário, você terá que fazer a alteração em um só lugar, ok? Nesse caso, esse pi dot js será usado em todos os lugares. Então, amanhã, se você tiver 50 componentes, isso é o que será usado em 50 componentes. Assim, você não precisa fazer alterações nos 50 componentes, manuseie-os uma vez e tudo está resolvido. OK. Então, sim, é assim que isso funciona. E espero que seja você que esteja achando a utilidade disso aqui Tudo bem. Então, sim, isso é sobre esses instintos e interceptores de eixo personalizados, como você pode se fundir e trabalhar com eles E espero que você tenha achado isso útil. 13. Conclusão do curso: E isso nos leva ao fim dessa jornada transformadora no mundo da integração do EPI Bem, exploramos como a integração de APIs em seu aplicativo pode ser um divisor de águas na criação de aplicativos dinâmicos Investigamos os fundamentos de fazer chamadas de API, lidar com carregamentos e erros e aprimorar a segurança integrando instâncias de acesso e interceptores personalizados Também aprendemos e exploramos como você pode fazer várias chamadas de API simultaneamente, e agora você adquiriu as habilidades necessárias para aprimorar seus projetos de reação Mas lembre-se, a exploração não termina aqui. Eu encorajaria você a continuar experimentando, explorando e ultrapassando os limites do que é possível com EPIs em seu aplicativo de reação é possível com EPIs em seu Estou empolgado em ver como você usará essas habilidades e conhecimentos adquiridos para impulsionar seus projetos de desenvolvimento web Lembre-se de que inovação tem tudo a ver com adotar novas técnicas e tecnologias, e a integração de EPI ou o trabalho com EPIs é uma parte essencial do seu kit de ferramentas de Obrigado por ser um grupo de alunos tão engajado e entusiasmado Espero que este curso não apenas tenha equipado você com novas habilidades técnicas, mas também tenha inspirado você a pensar de forma criativa sobre a criação de aplicativos web robustos Com esta aula, você encontrará um projeto de classe que eu o encorajaria a concluir e compartilhar na seção de projetos com toda a turma. Eu gostaria de lhe desejar boa sorte e tudo de bom.