Como consumir API de Terceiro (Brasil API), com C# e .NET 6 | C# Na Prática - EP. 7 (parte 1)
20.72k views5592 WordsCopy TextShare
Artigo Tech
Fala galera, mais um vídeo do quadro C# Na Prática aqui no Canal, neste vídeo você vai aprender a co...
Video Transcript:
Então galera no vídeo Hoje a gente vai desenvolver essa vizinha aqui ó que legal tô consumindo serviços de uma penitenciária chama Brasil a Penha pública bem legal e já aberta a documentação dela e olha aqui que bacana essa foi desenvolvida e nós iremos desenvolver e é o seguinte ela faz esse primeiro primeira rota aqui retorna todos os bancos disponíveis existem no Brasil e aqui ó ela retorna por código por exemplo 104 é o código da Caixa Econômica Federal tá aqui ó bonitinho e por exemplo vamos pegar o CEP e a documentação e exemplo copiar eu vim aqui colocar E tá lá aqui ó o CEP bonitinho outro CEP você vai funcionar normalmente retornando bonitinho vai ser esse o nosso desafio aí desses dois vídeos né já vi eu tive que dividir é em Parte 1 Parte 2 esse não ia ficar um vídeo muito longo então espero que você curta Aproveite Então esse conteúdo Fala galera tudo bem com vocês em fala é o Ibis E você está no canal artigo técnico hoje temos mais um vídeo aí do quadro ser Sharp na prática aonde cada novo vídeo desse quadro Você Aprende aí a fazer algo novo aí consercharpe você tá iniciando aí no mundo dos shape do mundo dortnet você tem aí nesse quadro vídeos práticos te mostrando te ensinando aí como que faz determinada coisa utilizando aí por ser Chape Claro a plataforma do outlet e no vídeo de hoje como você já viu aí no título eu irei te ensinar como você consumir uma PG de terceiro utilizando os Sharp juntamente com o ponto net 6 e neste vídeo você irá sair sabendo como que você consegue consumir uma ap de terceiro esse tipo de projeto é bastante comum para as empresas onde você ali tem que consumir uma API de terceiro para poder disponibilizar isso para sua empresa de uma forma personalizada ter esse serviços aí disponíveis para sua empresa é e também muitas vezes você precisa consumir uma API pública CEP só na CNPJ se tá ativa ou não tá existe vários cenários aí que você precisa consumir um apito terceira criar uma API para consumir outra P Então esse é o objetivo do nosso vídeo de hoje sem mais enrolação aí vamos direto aí ao código né E vamos iniciar o nosso projeto Então nesse vídeo pessoal era fazer de forma mais dinâmica e objetiva possível para você também possa executar aí e aprender e se consome outras apis né através da construção de uma p. i utilizando aí o c sharp junto ou um ponto net 6 Então vamos iniciar a criação do nosso projeto somente eu vou utilizar é o vs code como editor de texto você pode utilizar aí o editor da sua preferência seja o vscold ou visual estúdio ou qualquer outro aí que você prefira então vamos iniciar pela linha de comando já Criei uma pasta e na área de trabalho artigo até e eu vou iniciar aqui a criação do nosso projeto então comando E cria um projeto é dot net New webi-man Eu Vou Chamar esse projeto de integra Brasil API ele já vai criar em para a gente Beleza agora eu vou entrar aqui nesse projeto beleza ele já abriu aqui para mim o vs code ele já cria para gente uma estrutura de api agora um ponto net 6 se você não tem mais ela classe Startup né só o programa aqui mas você tem aqui já um exemplo e controle e tal eu vou inicialmente limpar isso aqui é o deleite disso aqui a gente não vai usar a gente vai criar as nossas vou limpar isso aqui também Beleza vou dar um Yes e para questão de build legal ele cria essa pastinha ponto vs code agora depois de tirar essa sujeira aqui e vem junto esses exemplos eu vou criar inicialmente as nossas controles como eu falei inicialmente a gente vai usar o serviço de bancos ele traz informações bancárias e o serviço de CEP que é muito bacana você consegue trazer ali é endereços através de um certo somente Vamos criar aqui a controle de banco para começar a nossa brincadeira banco controle CS Beleza já criou aqui ela é uma poltrona Então tem que ter herdar aqui de controle base controle base Outro ponto para ele já te ajudar aqui adicionar o usem já vou colocar e as datas notion api controle ok também arold [Música] api v1 e o nome da nossa controle o caso é o banco né controle legal bacana vou criar e também agora a nossa outra controle a gente vai precisar que é controle de endereço controle CS beleza da mesma forma vamos herdar aqui controle laser beleza da mesma forma que vamos ter a nossa data do texto é um controle né e a rota também igualmente aqui dizendo que a nossa V1 controle bacana OK agora vamos depois de criar aqui uma casca inicial da nossas controles Vamos criar as nossas interfaces Então vamos criar nossas interfaces eu vou fazer pessoal eu não vou criar vários projetos para separar em camada né por projeto vou criar e um projeto Simples então vai ser no mesmo projeto de webpi vou criar uma pasta para poder separar então vou clicar aqui na raiz então criar uma nova pasta chamar essa pasta de interfaces aí nessa pasta eu vou ter inicialmente aqui a nossa interface chamada e quer o sufixo né de interface banco service OK ela é uma interface então aqui eu vou mudar interface depois eu vou criar aqui a nossa Interface para o endereço vou vir aqui meu vamos criar uma nova interface service Ok e agora já criou bonitinho na interface aqui legal eu vou criar uma interface chamada interface chamada e Brasil api Vamos criar o nossos models Esse é um passo bastante potente aqui onde a gente vai fazer o mapeamento né dos modos Então vamos lá vou criar uma nova pasta no nosso projeto pastinha models nessa pasta models vai ter é o nossos objetos conforme a retornado lá na api né então primeira pergunta como que eu sei que o objeto são esses que tipo de retorno que a minha api terceira eu tô consumindo retorna através da documentação então por isso tá aí a grande importância de você ter aberto aí a documentação da AP Você vai consumir ele não tem como você adivinhar esse tipo de retorno que é então vamos lá vamos começar aqui o nosso modelo de eu vou fazer duas rotas né a rota e retorna todos os bancos do Brasil e a rota que Retornam apenas um banco através de um código então vamos pegar esse em primeiro aqui ó que legal tem bonitinho aqui para gente como é o tipo de retorno ele retorna esse código aqui e SPB o name o Code e o full name agora vai aí uma dica legal para você Você vai entrar e Abrir outra aba vai digitar pi pesquisar isso aqui vai aparecer para você esse site aqui ó Jason dois ser sharp. com aqui você consegue converter de objeto Jason para classe fechar então é bem legal então eu vou fazer aqui eu vou vir aqui expandir tudo para mim saber todos as propriedades vou copiar aqui ó copiado vou vir aqui vou colar vou ver e vou dar um converte aqui eu já posso deixar um esqueminha que o que você Sharp né o padrão do Então vou usar para ficar o case e adicionar o Jason atributos Vou clicar de novo ok ele girou já bonitinho um objeto vou vir aqui vou operar vou voltar lá para o meu projeto no meu primeiro modo aqui que eu vou criar vou vir aqui meu vou chamar ele de banco Model vou dar outro V aqui copiar Eu não vou usar o Jason Profit vou usar o Jason Profit name já é do já tem já vem com o lote NET né e o próprio beleza copiar aqui para todo mundo legal control P já vem aqui dentro do system.
tech ponto Jason eu já vou colocar ele aqui legal para fazer tratamento de nulo né então vou colocar um ponto de interrogação para ele não ficar dando esses ordens para gente né vou criar o nosso outro Model qual que vai ser o modo endereço móvel legal como eu sei o retorno eu sei as propriedades volta lá da documentação e vamos ver no caso vai ser esse CEP aqui não vai ser o V2 tem o V2 eu vou usar o CEP normal primeiro aqui então vou dar o expandir e vem vem a região Street service o nome das propriedades está em inglês né Vamos copiar aqui vou vir aqui nesse site e muito legal parabéns ao criador desse site facilita muito a nossa vida do dia a dia então vamos ver e copiar Legal Vamos ver em convert converter de novo converteu legal o peixe aqui vou voltar aqui para o meu molho vou vir aqui eu não quero Jason Profit instalar o o pacote lá do Nilton soft eu não quero instalar Esse pacote ele já tem ali o teste né do System Então não precisa disso então vem aqui vem aqui contra o usam aí de possível nulo eu vou colocar esse tratamento para propriedade Lula Então vou vir aqui bonitinho bonitinho eu não vou querer que o nome esteja em português então eu vou mudar para estado aqui eu vou mudar para a cidade até porque o uso do Jason Prophecy name é exatamente com esse objetivo né que ele vai esterilizar você precisa usar o Jason blog name se o nome do da tua propriedade for diferente do nome como a gente precisa de celularizar com exatamente esses nomes então por isso eu uso jejum então aqui eu vou colocar região aqui eu vou colocar rua aqui eu vou colocar serviço né serviço cedilha claro né então beleza aqui eu esqueci de renomear o cara nomear também eu quero sistema de nome abreviado aqui eu quero chamar de código é o código do Banco eu quero chamar de nome completo nome completo legal e claro mantendo o nosso discos necessar beleza próximo passo depois da criação dos nossos models Vamos criar os nossos dto e você vai entender porque essa necessidade Vamos começar com esse responsável Então vou vir aqui New responde genérico o nome já diz né ele vai ser um response genérico piadinha sem graça né pessoal beleza vamos continuar é deixa eu tentar criar aqui o visual Studio não tá querendo nos ajudar genérico legal beleza não vai ter essa classe response genérico vou criar aqui que ele vai receber um objeto Genérico e para a gente de Class beleza aqui dentro dessa classe vamos ter vamos ter o http status code do retorno da nossas exibições chamar ele de código http do S7 aqui a gente precisa adicionar o e usem system. net Opa e os insistem. net vamos ver aqui controle aqui às vezes o estúdio aos bo os dois estúdio code da osbo louco mas já volto uso insistem.
net legal já adicionou para a gente nós vamos ter aqui um carinha de interrogação estão de nulo né dados retorno aos retorno beleza vamos ter também um público spando Object beleza esse cara vai chamar erro retorno você vai entender porque a gente tá fazendo dessa forma aqui vou usar aqui System só para adiantar para vocês expando objeto e ele representa um objeto né dinâmico ao qual ele em tempo de execução ele recebe algum determinado objeto dentro desse camaragir aqui né no caso e nós vamos receber quando for um erro quando tiver um erro eu não vou querer fazer personalizado esse esse erro então vou retornar conforme vem na api então vou ter esses objetos para fazer exatamente essa função vamos lá tá criado inicialmente o nosso primeiro DPO responde genérico o próximo DPO a gente vai criar é o banco responsável Esse é o próximo a gente vai ter banco Responsa aqui eu vou criar esse objeto aqui que é o Pub string ISPB o código IFPB beleza aí vai ter aqui o Public string nome abreviado porque eu tô fazendo assim pessoal porque é dessa forma eu tô criando esse DPO porque é dessa forma que eu quero que o meu usuário meu usuário consome a minha API receba de volta aí as informações do banco eu não quero que vem em inglês conforme tá lá no na documentação o legal quando você consome uma b e terceira e você pode fazer isso né Você pode retornar como está né se for o caso ou você pode personalizar o seu retorno então aqui eu tô personalizando o meu retorno por isso da criação desses dtox porque eu não quero que ele me retorne Com estes nomes aqui ó do modelo name code e funeme não quero que ele me retorna assim se eu usasse esse modo retornar ele é retornar dessa forma eu tô desse analisando né usando o Jason dessa forma aqui né usando o nome padrão dele né então para eu posso retornar Conforme eu quero eu queria um dto eu vou criar um dto aqui ó como eu já criei aqui né com os mesmos nomes tá vendo eu tô usando os mesmos nomes que eu coloquei aqui ó para poder fazer um pouco mais à frente o map indício e ele retornar para a gente Dessa forma aqui você vai ver isso quando a gente chegar no final do projeto você vai ver na prática eu como e vai ficar né Então beleza vamos criar mais um próximo DPO tá faltando no nosso projeto que é o dto endereço ele tem também né então eu posso vir e até para agilizar o pé aqui ó que vai ser do mesma forma mereço response vou por aqui só eu não preciso desse isopropil aqui não vou precisar dele então vou vir aqui vou vir aqui beleza beleza ok aqui você vai já vai começar a entender porque que eu tô criando esse dto por exemplo esse campo service né o campo de serviço eu não quero que ele retorne para o meu usuário não importa da onde que vem essa informações para o meu usuários e venho do viasep dos Correios não quero saber disso então eu venho aqui ó já boto aqui Jason Ignore para ele não retornar isso para o meu usuário ou soma meu IPI não quero ele retorne vai ficar interna essa informação Então vai retornar para mim o serviço criados os nossos dtos pessoal vamos para o próximo passo aí que é criar os nossos serviços então eu vou criar aqui outra pastinha chamada Serve sim nessa pastinha chamada Sérgio Vamos criar as duas classes a gente vai ter nesse serviço Nossa classes de serviço em nossa primeira vai ser banco Serve sim a segunda vai ser o endereço Service aqui dentro dela a gente já vai começar aqui a fazer né as nossas construir e o nosso serviços da nossa epi Então antes né de construirmos aqui o nosso serviço de banco nós vamos fazer criar aqui outra pastinha chamada hashi aqui dessa parte dentro dessa pastinha haste é aonde vai ter a minha a minha chamadas né Realmente para api do Brasil api Então vou vir aqui para o serviço do Brasil api vou criar aqui dentro do resto uma nova classe essa classe vai chamar Brasil api rest Legal vamos lá deixa eu fechar essas monte de aba aberta vou abrir aqui de novo Brasil api rest Olá ó o bug de novo clica e na raiz vem aqui ele vai funcionar Brasil apê Service não sei se é do vs code ou da extensão e cria essas classes né mas um dos dois tá agora criamos e o nosso Brasil aprast aqui nós vamos começar a utilizar as nossas interface primeiro interface aqui vai ser essa ai Brasil api Porém não tem nada aqui ainda né Eu só criei as interfaces mas não coloquei nada então já vamos colocar aqui vamos começar com a Brasil api dentro da Brasil api interface eu vou ter já vou colocar um aqui eu vou ter um response genérico esse responde genérico recebe o endereço móvel esse método vai se chamar endereço buscar endereço por CPF por CEP né no CPF beleza string Ok legal esse é o nosso primeiro método contra o ponto para adicionar aqui ó contra o ponto nosso método teste responde genérico ele vai ter aqui o nosso uma lista de banco móvel ele vai chamar buscar todos os bancos beleza próximo e último método mas se chamar teste responde genérico que vai retornar para gente um banco Model a qual o nome vai chamar buscar banco e esse buscar banco ele recebe um parâmetro é o código do Banco a qual a gente consegue filtrar a partir do código criado Então os nossos métodos da Brasil epi a gente vai voltar aqui para o nosso Brasil api service é Brasil renomear aqui rest legal renomear aqui também Brasília Brasil apny West Ok dentro aqui no nosso Brasil apperware começar a fazer vamos herdar Nossa interface ai Brasil api legal Ok vamos implementar aqui os métodos de toque só tá pessoal vou botar em cima ao nosso buscar todos em baixo buscar aqui vamos iniciar a nossa implementação da chamada aí para api terceira vamos começar e com o dono Aliás o endereço é buscar o endereço por CEP Então vamos lá eu vou criar aqui uma um request né um request para esse cara então htp http método método de ponto Gretchen a minha URL né onde eu vou bater eu sei disso documentação Então vou lá na documentação primeiro aqui o sétimo então onde está isso tá aqui ó se você olhar você tem aqui ó é [Música] brasil. com. br/pi/cep/v1 e o CEP eu vou copiar aqui eu vou voltar lá para o meu código Beleza já tá aqui bonitinho esse parâmetro vai entrar aqui nessa interpolação o cifrão para fazer a interpolação Então beleza vamos continuar aqui a um detalhe eu gostaria de colocar neste ponto ah eu poderia usar o alguma várias outras bibliotecas existe né como Fit o Hast Sharp o Flu são várias brilhas bibliotecas existe aí para o lote net a qual você utiliza elas para consumir é apis né mas nesse caso eu preferi fazer utilizando o próprio http cliente do cshared já vem junto ali com o c Shark então por isso eu preferi fazer dessa forma sem utilizar nenhuma biblioteca externa hein para requisições Ok para requisições http então é esse adendo aí então vamos continuando aqui vai resposta ele vai ter como responder o meu objeto genérico que dentro dele e é o endereço móvel que legal vou criar aqui o usem New http clite Lar response Brasil api colocar aqui como esse método eu vou deixar ele assim então tem que ter o Awake é o ponto Exato eu faço a aquisição para bem depois de fazer a requisição Vou colocar aqui o bar conteúdo response né ou Combo responde igual ao leite responsa Brasil api stream assim esse daqui camaradinha aqui ele vai formar em string para mim aqui ó o meu objetivo responde igual a e vamos começar a usar o nosso Jason será um testeralizar quem o nosso endereço móvel que tá lá o nosso Jason Profit lembra por isso e eu preciso colocar lá senão ele não vai conseguir descer analisar aqui legal bacana aqui eu vou ter um if a qual eu pergunto responde Brasil ponto é sucesso ou seja retornou status de sucesso do Brasil api se sim eu quero ser faça quero vem aqui ó no meu código http Lembra do nosso objeto responde genérico eu quero que ele set esse cara com response Brasil response Brasil api status code que é o status né ele vem de Ok o meu responsável dados retorno Quem são ele é o meu objeto vai estar lá bonitinho preenchido com meus dados de retorno Beleza mas se ele não for sucesso se não deu bom né a nossa chamada para algum motivo eu quero ele vem aqui coloca aqui responde ponto código http igual a response Brasil api.
status code response ponto erro retorno igual aí eu vou cerealizar o erro o Jason por isso eu criei esse objeto essa propriedade responsa expando objeto objeto né que ele recebe qualquer tipo de objeto um tempo de execução eu vou botar aqui ó é um espanto Object Object legal e o conteúdo de responsa eu fiz a transformação e para conversão e para string na linha 17 Então vou colocar aqui né e a linha na linha 18 agora quando eu adicionei o use Ok beleza Luiz pano objeto e dinâmico tá aqui assistem ponto dinâmico ali agora embaixo pessoal já Construir tudo em baixo só precisar retornar nosso responde a gente tem aqui na linha 15 ó responde ok não vou criar esse enquanto a gente não testes e valide e tá funcionando beleza então vamos voltar aqui para o nosso serviços tá vazio ainda tá chamando ninguém né então aqui dentro Serve sim antes de implementarmos tem uma extensão bem legal no scode Mas você poderia instalar por linha de comando também pessoal mas tem uma extensão bem bacana que essa extensão aqui ó outro shift p é um nugget galera é como se fosse lá dentro do visual Studio você tem aquela opção de abrir uma gast que ele abre pra gente de forma visual para ficar mais é interessante aí para você é tem essa opção também de você instalar essa extensão aqui ó então consegue ter ali bonitinho para você aqui ó eu vou precisar instalar um carinha que vai fazer para gente um mapping a gente precisa fazer esse maping de forma manual Que carinha é esse Eu vou instalar no nosso projeto ele se chama auto-napper então eu vou vir aqui ó vou selecionar o meu querida automape esse primeiro aqui ó vou vir aqui e vou instalar vou selecionar o nosso projeto e instalar última versão dele mesmo tá instalando Ok já tá instalado e o outro eu vou instalar também é esse de baixo pra gente poder fazer a injeção de dependência então eu vou vir aqui instalar top já instalado aí essas bibliotecas a gente precisa para utilizar e no nosso projeto vou fechar e o console então aqui no nosso serviço a gente vai começar a implementação do serviço de endereço Então vamos lá inicialmente e nós precisamos herdar né implementar a nossa e né interface né e de interface endereço tá lembrado aí que a gente não colocou nada aqui né então vamos colocar os nossos métodos Diferentemente da e banco api e tem todos os métodos que Brasil todos todos os serviços né que é Brasil oferece a gente aqui no endereço certo você vai ter só referente a endereço no caso aqui seria esse daqui né então para economizar um pouco do nosso tempo vou ver e copiar vou vir aqui colar aqui no nosso endereço service só que deu um detalhe em vez da gente retornar esse endereço com Model que se a gente retornasse retornaria eles nomes em inglês state Witch tudo em inglês lá conforme mostra e a documentação região dessa forma Tudo tudo em inglês e não é como a gente quer a gente quer retorne cidade região Rua Então o que eu faço eu venho e mudo para o meu objeto deto lembra lá o meu objeto Então tá aqui já bonitinho vou vir no meu serviço ele tá falando ó e o método lá que você não tá implementando aqui nessa classe então experimentar a interface aqui no nosso endereço serve-se né nosso serviço de endereço onde a gente pode implementar qualquer regra de negócio qualquer necessidade do nosso da nossa pi a gente vai ter inicialmente aqui de propriedade rangelone imap Foi por isso a gente já instalou aqui o nosso automeper que ele vai usar daí ó o Usain automépper legal próxima propriedade privatelone quem quem é essa propriedade vai ser da nossa Brasil api onde tem todos os métodos do serviço aí disponibilizado pelo Brasil é pela Brasil API ok então beleza legal Maravilha primeiro método né que a gente vai utilizar da Brasil abrir o primeiro serviço é esse de endereço certo então vou vir aqui ó vá endereço auente esse cara vai ser um método assim então eu preciso ao leite e aí eu vou colocar aqui ó Brasil api ponto quem buscar endereço por CEP quem recebe aqui é o CEP aqui para a diferente né quero buscar endereço penas Sky endereço eu vou mudar também buscar endereço beleza aqui ó eu vou vir aqui buscar endereço Ok tudo certinho beleza Tá ok vou buscar endereço que beleza Ele tá reclamando provavelmente do retorno quando eu tô retornando nada agora eu vou retornar aqui vou usar o nosso maper ponto Map esboço genérico esposo genérico que vai retornar o que o endereço responsável não mais o Model response o endereço móvel né vai retornar o endereço response da nossa p. i response final a gente retorna aí para o nosso cliente ou some a nossa p. i endereço ok aqui em cima você tem o responsporte genérico models ponto endereço com Model e aqui você já tá retornando o endereço com response aonde a gente retorna o objeto da forma que a gente quer tudo em português e sem retornar essa propriedade e pra gente não faz sentido aqui vocês viram aqui que eu tô usando o mapper certo quando eu uso esse autométer isso e Apenas não é suficiente eu preciso fazer a configuração dele para fazer a configuração dele vou vir aqui falar uma baixinha chamada Maps dentro dessa pastinha eu já vou configurar para os nossos dois caras né endereço certo sim também o nosso service Então vou criar aqui começar endereço até para a gente já poder testar aquela primeira rota da api vamos ver se vai funcionar né então endereço aqui é uma configuração padrão que você precisa fazer toda vez que você utilizou do profile e já pegou ali automaper depois eu crio aqui um Construtor atalho e setor r e vamos criar esse Construtor ele não tem parâmetro vou tirar aqui mas ele tem essas configurações para agilizar o nosso tempo eu vou copiar aqui e vou colar aqui já para a gente responde Genérico e são configurações para poder funcionar o nosso automaper então nosso objeto Genérico e os nossos objetos e endereço response e o endereço moda Ok deixa eu fechar ele aqui certinho aqui agora a gente não pode esquecer de injetar aqui no nosso serviço esses dois caras não não vai funcionar vai dar erro uma batalha interessante seleciona contra o p aí você pode gerar Construtor ele já gera para você aqui ó bonitinho tá vendo ok certinho aqui agora vamos vir aqui no nosso programa aqui dentro do nosso progre a gente vai fazer uma configuração importantíssima vamos vir aqui ó dentro do nosso Progresso partir da linha 8 da para descer a linha Vou colocar aqui build builder.