Latest / Entre Chaves / Snippet #12 Dicas essenciais para organização de APIs no back-end
Transcript
- 0:09Olá pessoal, eu sou o Arthur bom tempo desenvolvedor de software
- 0:12full Stack aqui na DCI digital e hoje eu vim conversar um pouco
- 0:16com você sobre desenvolvimento de APIs.
- 0:19Muito provavelmente que você já trabalhou com desenvolvimento
- 0:21web já pelos teus sites, muito provavelmente você geralmente
- 0:25fica com o servidor. Que é a parte polêmica com o
- 0:27banco de dados, né? E que a gente integra confronte
- 0:30aí da aplicação. E é sobre isso que eu vim
- 0:31conversar um pouco com vocês hoje.
- 0:33Muito provavelmente você deve saber desenvolver alguma PI.
- 0:36Já deve ter feito, feito seus primeiros servidores mexendo um
- 0:39pouco com isso. Mas há uma grande diferença
- 0:41entre você saber de desenvolver uma PI está funcionando e entre
- 0:44você saber arquiteturar essa API.
- 0:45Nós, como desenvolvedores de software, nós precisamos saber
- 0:48organizar muito bem elas, tanto para poder desenvolver.
- 0:50Fica performático, mas também para poder ficar melhor na hora
- 0:53de fazer os testes, na hora que outro desenvolvedor for mexer
- 0:56nessa API, poder mexer tranquilamente, né?
- 0:59Sem ter problemas. E também quando der algum bug,
- 1:01algum problema, a gente poder corrigir esse erro.
- 1:04No ponto onde a gente precisa mexer, tem que ter que estar
- 1:07olhando o código inteiro para isso, que tem as aquicultura de
- 1:09software. A gente pode se triturar para
- 1:11poder deixar o código bem distribuído, bem organizado e
- 1:14com essa organização. Qualquer um desses casos que eu
- 1:16comentei da gente, de testar outra pessoa que tem que
- 1:19desenvolver uma featuring ou talvez a gente tem que dar
- 1:21manutenção, a gente conseguir fazer isso de forma eficaz,
- 1:24então. Hoje vim trazer pra você daqui
- 1:26um pouco sobre arquitetura de camadas.
- 1:28Então era da das arquiteturas mais usadas aí em
- 1:30desenvolvimento de back end, né? Com APIE muito comumente usado,
- 1:34e assim eu vou mostrar aqui pra vocês um código Spring boot, né?
- 1:36Eu vou dar exemplos assim, mas não se empreende da tecnologia,
- 1:40não se empreende da arquitetura também.
- 1:41Vamos fixar mais aqui sobre cada responsabilidade e como é que
- 1:45funciona pra você poder usar no seu dia a dia, no dia a dia.
- 1:48Aqui na DTI eu mexo com mínimo EPI do DOT net em que.
- 1:52A arquitetura é um pouco diferente, mas se você entender
- 1:55bem como funciona, cada Canada, o que é uma controla, é uma
- 1:58service, você consegue fazer de forma adequada também.
- 2:01Quando você mexer em outra arquitetura, em outra estrutura,
- 2:04já pega o seu café, aí já pega o seu lanche, deita um pouco aí e
- 2:08vamos conversar aqui por alguns minutos, beleza?
- 2:11Pra isso eu tenho um fluxo que eu acho que vai facilitar
- 2:13bastante aqui pra gente poder aprender bem, mas lembrando, não
- 2:17se prende a isso então. Quando a gente vai desenvolver
- 2:20um API, muitas vezes a gente já pensa em criar um Ed point
- 2:24apenas pensa em conectar com o banco de dados ou qualquer
- 2:27tecnologia que a gente está usando.
- 2:28A gente não pensa como vai estar estruturado em nosso projeto.
- 2:31Mas é muito importante você pensar desde a hora que alguém
- 2:33acessa a sua API, é o primeiro clique, né?
- 2:35Pra poder usar essa sua requisição até quando ela acessa
- 2:39o banco de dados. A gente não quer que alguém
- 2:41entre com algum dado indevido no banco de dados, a gente não quer
- 2:43que tenha algum problema. Então tem várias camadas, várias
- 2:47partes que a gente precisa passar por elas antes de te
- 2:48salvar no banco de dados com um dado ou até mesmo antes de
- 2:51recuperar um dado do banco. Vamos supor que você acessou o
- 2:54API, seja via front end, seja via postman.
- 2:57De alguma forma, quando você acessa essa API, o browser, né?
- 3:01Oo que você está fazendo, vai fazer uma requestra, então
- 3:04primeiro vai ter uma. Agradecer Quest aqui pra fazer
- 3:07essa solicitação e a primeira camada, né?
- 3:09Data e que vai chegar quando a gente fala disso é a controle, a
- 3:13controle, basicamente ela é responsável por receber essa
- 3:15requisição, validar os dados iniciais, né?
- 3:18Saber qual que é o verbo HTTPE tudo e também vai enviar para o
- 3:22service pra poder fazer o processamento de todos os dados,
- 3:26mas antes de processar em si, vai ser ODTOODTO né?
- 3:29Que é o data transfection object.
- 3:30Ele serve pra poder pegar os dados, verificar se eles estão
- 3:33no formato correto pra então enviar pro servidor.
- 3:35Evidor é basicamente o núcleo da nossa aplicação, a nossa regra
- 3:38de negócio. O clube que for mais crucial vai
- 3:40estar aqui no nosso service. Eu peguei aqui né, no por pra
- 3:43nossa PIPI receitas. Aqui eu estou usando o
- 3:45claudinari que é pra poder fazer o piloide de imagem na nuvem,
- 3:48mas poderia ser qualquer servidor.
- 3:49Então se a gente perceber aqui nosso service vai solicitar o
- 3:53serviço. Claudinari, por exemplo, quando
- 3:55a gente também quer tratar os dados, né?
- 3:57A gente não quer que o usuário veja exatamente o dado do banco
- 4:00de dados, porque esse dado ele pode de insensível, pode ter um
- 4:03ID que ele é pessoal. Enfim, aí a gente não pode
- 4:07passar direto, então a gente precisa de um map, o map,
- 4:09basicamente, ele vai ao a service solicitar esse map.
- 4:13Ah, ele vai transformar o dado da entidade para um dit, ou ou
- 4:18do dit, ou para uma entidade, para que esse dado fique de
- 4:21forma mais segura. E também nós temos o repository,
- 4:24que é a parte que vai conectar em si com a nossa entidade e
- 4:28buscar o dado do banco de dados. No caso do Spring boot
- 4:30específico, a nossa repositura conecta diretamente com o banco
- 4:33de dados. Através do JPA então eu fiz esse
- 4:36esquema aqui, né? Pois você não reposito, comente,
- 4:38tem outra tecnologia como o DOT net através do inst framework
- 4:42node, através do TAP RM por exemplo, você vai ter essa intit
- 4:46no meio, mas em algumas outras tecnologias podem direto.
- 4:50Então basicamente quando a gente acertar nosso controle, vai
- 4:52solicitar o dado da da nossas teses de via de ti ou né?
- 4:55Vai validar esses dados nas teses, vão ter nossa
- 4:57orquestração de todos os dados, então a service vai solicitar o
- 5:00lado do repositório né, pra poder.
- 5:02Ao valor do banco de dados ou retornar ao dado do banco de
- 5:04dados fazer AA conversão de é via mepper, né?
- 5:07Do nosso DTU para a nossa enche e vai retornar para o usuário.
- 5:11Então se a gente ver que o serve, se também retorna.
- 5:13E ele tirou response para controle, né?
- 5:15Que é controle que recebeu esse dado, foi solicitado, vai para
- 5:19dar uma resposta HTTP, que aí tem os demos HTTP tem várias
- 5:22burocracias também e vai retornar para o cliente apenas
- 5:25os dados. Da forma correta.
- 5:27Então essa é a arquitetura básica que vocês precisam
- 5:29compreender muito bem cada camada dessa daqui, né?
- 5:32Por isso, nomear criatura de camada deve ter pena, deve ter
- 5:34sua responsabilidade única, não deve ter algo a mais porque
- 5:37verificar porque que deu um status diferente, porque que vem
- 5:40um verbo HTTP errado, muito provavelmente o erro vai estar
- 5:44na controle, que é a parte que vai criar nosso eadpoint.
- 5:47Vamos supor que você teve algum erro ao salvar no banco de dados
- 5:49do claudinari, muito provavelmente, ou vai estar no
- 5:51próprio servidor do claudinari ou vai estar no nosso service.
- 5:54Consegue perceber a importância disso?
- 5:56E vocês estiverem mexendo com esse QL diretamente com o
- 5:58entist, o repository, muito provavelmente na hora de salvar,
- 6:02se der algum erro no seu banco de dados, pode estar ou no
- 6:05repositório ou no ente. Então é muito importante a gente
- 6:08ter essa noção básica de como funciona, APIE, saber estruturar
- 6:11muito bem. Então eu vim aqui para o código
- 6:13para mostrar para vocês como funciona essa estrutura básica
- 6:16da PIA. Gente, vai começar no nosso
- 6:18controle. Que a nossa camadona vai criar a
- 6:20nossa requisição, vamos pegar, por exemplo, aqui o nosso post,
- 6:23né? A gente vai definir o nosso
- 6:24verbo, que é o post, né? No caso, aqui vai ser o primeiro
- 6:27de imagens. A gente está mostrando um
- 6:28formato de dado, a gente vai fazer uma validação básica aqui
- 6:31e se a gente perceber aqui embaixo, vai chamar o nosso
- 6:34servidor no método create. Então, se a gente vier para
- 6:38nosso serviços aqui embaixo, a gente vai ter o nosso método
- 6:41create. Aquele basicamente vai verificar
- 6:43se tem 11 imagem, verificar se Ela Foi preenchida, né, se foi.
- 6:48Vai criar um objeto aqui, né? No caso do Java, e com esse
- 6:52objeto a gente vai chamar o nosso repositório.
- 6:54Então, como eu falei, vai dar controle para o server, dos
- 6:57server para o repositor, essa estrutura básica.
- 7:00E lembrando também que a gente tem o nosso mepper aqui para
- 7:02poder reservar o formato que vai exibir.
- 7:06No caso, vai pegar o novo DT ou e vai enviar para uma gente para
- 7:09poder ter mandado. Para o nosso repositório e no
- 7:12nosso repositório. Nesse caso aqui a gente está com
- 7:14Spring boot, então sempre fica muito.
- 7:17Mas basicamente vão ter verbos aqui, né?
- 7:18Vão ter métodos e colegas estão com o nosso banco de dados, por
- 7:22exemplo. É buscar pelo título, que foi o
- 7:25que eu fiz aqui. Então a gente consegue ver que
- 7:28vai ter cada um deles, vai ter uma responsabilidade.
- 7:32Que tendo muito bem cumprida, facilita o desenvolvimento da
- 7:36nossa API e posteriormente da manutenção de forma muito mais
- 7:40estruturada e mexendo apenas em determinados pontos, porque a
- 7:44aplicação já está muito mais bem organizada em camadas.
- 7:47Agora vou deixar aqui também o nosso GitHub, caso você queira
- 7:50dar uma estudada nesse código e também entender um pouco melhor
- 7:53o diagrama. Então, caso você queira o código
- 7:55fonte, pesquise por Arthur. Bom tempo deve barra heatsiple,
- 7:58volt e π. E vai ser com o nosso código
- 8:01completo dessa apê de receitas. É com tutorial explicando como
- 8:04rodar. E eu espero ter contribuído um
- 8:06pouco com o seu ensino aí sobre apê e desenvolvimento backend.
- 8:09Espero que você tenha tido um pouco um gosto de como funciona
- 8:13uma apê e porque é muito importante você dividi la em
- 8:15responsabilidade e camada, vejo vocês em uma próxima
- 8:18oportunidade, até mais.