Fala galera sejam bem-vindos a nossa aula número 3 E hoje nós vamos falar um pouco mais sobre Services repositores e o tal Controller para você que já estuda um pouco mais a fundo sobre apis rest deve saber que abre e o resto por de trás dela ainda existe um software que geralmente a conhecido como back-end Ou seja é algo que está atrás por de trás geralmente de uma telinha bonitinha pela qual a gente conversa com os nossos clientes o from tênis por sua vez seria ali aquelas interfaces gráficas que fazem literalmente a interface entre o
seu usuário e o software Ou seja a solução que foi construída para ele bacana isso né porque quando a gente fala de ap a gente está falando de uma em há entre dois softwares na a mãe interface de programação de aplicação agora quando a gente fala de u i ou II Uai quando a gente tá falando inglês nós estamos falando de uma interface com o usuário e aí nesse caso a gente não tá falando aqui no computador e outro computador não sofre outro solta mas sim entre um software que um ser humano que é geralmente
conhecido como interação humano-máquina bacana é muito importante que você saiba disso porque porque tendo essa consciência a forma com que você vai se portar perante os testes da aplicação que nós como eu disse para vocês antes vamos ver aqui mais a fundo é lá para segunda parte desse nosso curso aqui você vai entender melhor como como a pensar nos testes que precisam ser feitos para cá determinada up que você vai virar texto é legal isso né Tem uma atitude que eu quero compartilhar com você nessa aula que me fez com certeza ter as minhas habilidades
e testes em apenas resto elevado e disse que a gente fala aqui dentro dessa aula que é conhecer um pouco mais sobre essa parte que está por detrás da peixe é o black and da sua aplicação é a conhecer um pouco mais sobre arquitetura do software que fica que ali então é a aves traída por de trás da sua up Olha que interessante quando você conhece o que é o service O que é o repositor estão em dois componentes bastante comuns hoje em dia na arquitetura de Jateí resto você acaba por descobrir que Independente de
qual é a interface que vai e fora do software você por detrás dele e umas coisas comuns Como por exemplo o lugar onde fica reservadas todas as regras de negócio em outro lugar que ficam ali armazenados assim Pallas as regras os mecanismos de contato entre a sua regra de negócio EA persistência dos dados conhecendo isso como alguém que testa aplicações faz com que você consiga pensar nos seus testes de uma maneira bem mais abrangente que você começa a entender que talvez talvez você não precisa testar tudo via http você pode testar às vezes chamando realmente
um método sem ter que depender do serviço de pé interessante isso né porque a justamente sobre isso que nós vamos falar dentro dessa aula quando eu falo para vocês sobre Services é uma camada dentro da do Beck and da sua aplicação que geralmente armazena as regras de negócio e quando eu falo sobre repositor é uma outra camada da sua aplicação que a responsável por trafegar há entre a regra de negócios e o banco de dados por exemplo o sistema de armazenamento que você vai ter e quando eu identifico uma inconsistência um banner e uma das
apis versus que o teste ao invés de simplesmente levantar a mão e chamar o desenvolvedor desenvolvedor para me ajudar eu primeiro olhos Logos para entender se aquela determinada no consistência estava no service eu não repositor que eu sei que se estiver ali existe uma forma específica de lidar com eles e veja service repository algo que não está relacionado diretamente ao apê e o resto pode estar direcionado a qualquer outro tipo de implementação interessante também isso né porque olha a gente está percebendo agora que a camada da pele resto que aquilo que faz a intercessão entre
um software e essa implementação que a gente tá denominando como serve repository apenas é está aqui no centro algo que faz que permite essa integração de uma maneira que o software terceiro aqui ele tem que conhecer apenas a interface não tem que conhecer como foi implementado service repositor Às vezes o sexo repositor está implementado numa linguagem por exemplo Rubi e aqui o software que está chamando esse essa né esse que tá fazendo uso desse software tá escrito e já o script por exemplo e a completamente normal e essa a minha também da api rest se
é isso por esses serviços que estão aqui para né A internet ou para outros softwares sem que esses softwares tenho que ficar aqui se preocupando com qual é a na forma com qual esse software foi implementado bacana né show de bola só que além de apenas falar aqui hoje eu quero mostrar para vocês isso então eu tenho aqui um exemplo que pode ser bem bacana para nós hoje que é que era um software capaz de buscar Todas as viagens ou filtrar por região como dizer que essa esse é o desejo que sei lá um piou
tinha na hora de construir aqui novo produto para atender a uma determinada necessidade do seu usuário interessante exemplo lá como é que eu Julho sendo uma pessoa desenvolvedora pensaria em solucionar esse problema primeiro eu pensaria em quais são os serviços que o implementaria dentro do Services e quais são os repositores que Eu precisaria que a obra Quais são as tabelas que teriam que ser construídas ou que seriam que ser consumidas E aí o que eu faria eu criaria um método dentro do Services para buscar todas as aqui no caso Todas as viagens para buscar Todas
as viagens eu precisar de ter um repositor porque como eu disse para vocês antes o repositório é quem faz essa interseção com o banco de dados então meu service que é onde está as regras de negócio chamaria ao repository que é onde está as interseções com banco de dados e o repository faz varia então uma requisição direta a uma tabela vi uma via com ele por exemplo um select na de todos os atributos de uma determinada tabela legal isso né então é implementaria primeiro isso esse service que faria isso eu também implementaria um outro também
da camada de service onde eu diria quero buscar e as viagens Mas elas têm que respeitar um ou alguns filtros vamos dizer que o filtro aqui a por região então para esse método que implementaria dentro do Celsius eu passaria um parâmetro de ser o parâmetro região passando esse parâmetro então falaria para o meu repositor em que que interessante com o candidato que eu quero buscar quero fazer uma com ele que ela tem um woofer um ar para uma determinada região entender a diferença no céu sempre me dei dois metros a Júlia tá muito ainda abstrato
para mim tem como se ser mais objetivo tem cinco vou mostrar o código para você olha só eu tenho aqui uma classe em Java chamada viagem service dentro dessa minha classe viagem Services que é o meu serviço milservice aqui eu tenho aqui o método listar que começa quando estar faz o método estava lá que a repository de viagem viagem repository eu faço um sindepol uma pesquisa em todos na ou seja uma pesquisa Total aqui de viagens contidas dentro do meu repositório de viagem Lembrando que aqui nesse caso repositório de viagens é nada mais nada menos
do que uma né interface aqui entre o meu software e o banco de dados Ok 30min aplicação e banco de dados já vi esse outro método que eu criei aqui embaixo é um buscar viagens por região Então nesse caso eu passo um parâmetro aqui de entrada que a região e aí o que ele faz ele vai lá e busca aqui no meu viagem repository todos por região e eu passo qual é a região tá bom lá Abstrai a completamente o os demais trechos desse código pensa apenas desses dois métodos que nós temos no service aqui
a gente tá então um método que é o método listar busca todas Oi e o método buscar viagens por região busca apenas por região qual região a região que eu passei por parâmetro quem pode chamar esse service aqui qualquer qualquer tipo de interpasse poderia ser uma interface gráfica poderia ser né que a mãe ter fácil de humano máquina poderia ser uma interface solf poderia ser uma interface um gráfico é que são que outros estilos de arquitetura de Jacareí ou protocolo já pelo resto na rua o protocolo de a pedir upweb na pele remota Como eu
disse para vocês não aula passada Entretanto é um serve se esse caso aqui é um bom exemplo do que é o nosso de 15 ela então uma série né de métodos ou classes que vão nos ajudar a interagir a resolver o problema a solução que nesse caso aqui era o que o nosso eu pediu que aqui era um só pra acabar de buscar todos os viagens ou filtrar por região tá aqui na busca o ovo buscar por região só que aqui nesse caso como ainda Beck and quem pode usar é apenas o software que faz
uso desse método esses dois metros daqueles não estão expostos pela internet ainda e aqui que é o segredo da coisa quando a gente fala de um app isso resta a gente tá dizendo que nós vamos implementar uma forma que vai expor esses dois métodos de maneira remota para que o outro software possa consumir luz que interessante isso né a partir desse momento está vendo na prática como é que o que é que existe por detrás de um ap preste que geralmente o que você ver né você está completamente a abstrato quanto a isso aqui você
vê apenas uma requisição http percorrendo ali a sua apvs aqui no caso tô te mostrando um pouco mais a fundo Ok beleza então a gente já sabe que um uso repository para buscar todos o outro uso repository para buscar apenas em viagens por uma região específica tem o que acontece esses dois métodos aqui eles podem retornar essas viagens para alguém agora que Por ora a gente ainda não precisa de falar quem é que vai chamar Tá bom mas eu já vou dar o spoiler É só abrir essa que vai chamar tudo isso ok é a
sua interface ali que vai ser construída a seguir segundo né os as recomendações do resto sendo então api restful Ok por hora vamos focar apenas no serviços e não repouse ver vou vir aqui agora no repositório para você ver como é um repositor para Que viagem repositor vou entrar aqui dentro dessa classe e você vai ver que aqui existe na ver já uma interface Ok do viagem repositor e Ele estende aqui algo chamado o JP a talvez você já ouviu falar sobre isso nas empresas que você trabalhou o J Piraquê basicamente é um Framework que
vai ajudar a quem desenvolve aplicações a tornar mais simples a forma de interagir com o banco de dados Ok pacificamente é isso então pela por essa interface é fazer aqui essa criar luz stinger aqui então a JP a repository o que vai acontecer muitas coisas já vão ser adicionadas automaticamente aqui essa interface quer ver um exemplo olha só dentro do viagem repositor Eu tenho um método chamado Firewall ok que aqui não não precisa é um médico especialista para saber que é para buscar Todas as viagens dado que eu tô no viagem repository com repositor pode
ser criado para diversas entidades distintas Ok legal então aqui você vai ver que esse pa em Hall ele nem existe aqui dentro eu disse porque porque eu já estou estendendo JP repositor só de fazer isso ele já automaticamente entende que vai vir alguns métodos padrões aqui o Firewall é um deles o fim do ano ela é um outro eu posso encontrar apenas um registro por exemplo uma viagem certo interessante isso né mas aqui eu tenho outros dois métodos que foram na identifique foram criados aqui pela pessoa programadora pela pessoa desenvolvedora para trazer características específicas um
deles é o paintball by região que eu passo aqui por parâmetro região para julho você não precisa fazer mais nada só isso daqui já é o suficiente já é o suficiente porque porque o JP a ele facilita isso para mim então eu falo aqui fa and Call vai e ele já sabe que tem que encontrar todos de alguma coisa e aqui eu falo região e já sabe automaticamente que tem que e os a partir de um atributo da minha idade que é o atributo região bacana é isso né então esse método aqui serve para ir
lá no banco de dados e buscar todos por região o Firewall serve para ir lá no banco de dados e buscar todos que existem para uma determinada tabela e aqui no meu Services no estar eu tô fazendo o pai de ó buscar todos indo buscar viagens por região tô fazendo find all by região para buscar todos por acaso determinada região agora que vem segredo do Controller que que o controle é faz o controle ele usa ele aqui no caso a nossa implementação da nossa P investe buscando as informações através dos serviços o que massa isso
em você vai começar eu entender o que é que você na verdade fase requisição quando você tá usando ferramentas como por exemplo um pouco cima que é o controle o controle era aqui ele a internet o intermediador entre quem chama seja lá um software terceiro ou uma aplicação que você tá usando para manusear sua api rest Ok e os serviços que você tá querendo aqui serviço de repositório e repositores legal né show de bola por hora o que você precisa entender que muita gente esse é um segredo que muita gente não sabe que é quando
você constrói uma their best ela tem ali um controlador e esse controlador é o intermediador entre aplicação que está consumindo a sua pelo resto e eu serviços que existem no back-end aqui nesse caso a gente tem dois métodos dentro do Celsius na verdade então o que vai acontecer o contra o alguém faz uma requisição que o controlador o controlador vai lá e faz uma requisição né usa um desses dois métodos ou os dois métodos para poder então buscar informações lá dentro do banco de dados traz essas informações devolver por controlar que desenvolve por uma uma
aplicação externa interessante isso né se você é alguém que testa país resta e usa o posto no por exemplo o pulso me chamo controle o controle quase então e determina o que que vem na sua requisição E qual é o método deles só chamar E aí então chama allservices com certo se chama o repositório repository interage com banco de dados e vai devolver essas informações até trazer informação para você de volta E se nós tivéssemos esse contexto todo uma interface gráfica como seria a interface gráfica chama o controlador o controle chama o service o certo
se chama repository deposito e conversa com banco de dados devolve a informação por repository devolve a informação por service devolve a informação com o controle e o controle devolve a informação para interface gráfica que endereço esses dados bacana agora a gente tá falando sobre a arquitetura de um software que a gente está falando sobre Quais são os itens que são que compõem toda a sua avó a sua aplicação esse bom e quando você fala sobre isso as coisas mudam porque nesse momento você começa a falar de uma maneira que as pessoas percebem que você realmente
sabe sobre apis rest que são aquilo o produto que você está testando o objeto do SUS e é isso que faz você se destacar dentro da carreira em teste de software não é simplesmente você conhecer é um pouco mais sobre como manusear o objeto que você testa mas sim você conhecer o que há no seu interior Quais são as características que estão vinculadas ao seu interior quais são os riscos Quais são as implementações as vulnerabilidades isto faz com que você consiga ter maior clareza do que vai testar e ter uma árvore vocabulário na hora que
for discutir com o seu time conversar com seu time e ajudar o seu time aplicar melhor os mecanismos de qualidade de solo o show vamos agora tô te interessa então nosso controle Essa vai ser a primeira vez que você vai entender Qual é a porta de entrada para outros softwares que querem consumir a sua BIOS veja só e com controlador aqui ele também é uma classe aqui nesse caso uma classe em Java porque a gente está construindo aqui essa api rest em Java especificamente e aqui dentro desse controlador a gente vai ter alguns métodos veja
só que na minha 42 a gente tem o primeiro que é o método cadastrar mais para baixo a gente tem um outro método que é o método listar esse método aqui é o método que eu pessoa desenvolvedora desenvolvi para atender a esse critério aqui que a gente tava discutindo com o nosso Pior que é quero um software capaz de buscar Todas as viagens ou filtrar por região e aqui que eu falo eu falo o seguinte quero criar um controlador esse controlador vai estar disponível via http ou seja de maneira remota para que qualquer pessoa possa
desculpa para que pessoas autenticadas e autorizadas e são realizar uma requisição então ter acesso ao Pinóquio que tinha pedido Todas as viagens ou viagens filtradas por região que vai acontecer aqui eu crio aqui esse esse método que é o método listar e a nosso ele com algumas anotações anotar é o ato de você colocar esse arroba alguma coisa aqui isso é uma anotação em Java faz a sua interessante essa notação que Quest map essa notação requestmapping ela tem um velo o verbo e fala qual vai ser o meu quem expõe qual vai ser aqui ó
minha o r que eu vou utilizar para acessar esse determinado recurso que o recurso de está Quais são as viagens todas ou por região Então quem quer né quem tem acesso a essa minha api rest vai ter um endereço dela por exemplo http://local ou os pontos alguma coisa certo esse é o endereço da minha ap preste/ver um barra viagens é onde eu vou ter aqui acesso a Exatamente esse determinado em depoente aqui ok E aí tendo acesso ao Barra ver um barra viagens Eu também como pessoa desenvolvedora coloca qual é o método também conhecido como
o verbo e eu falo aqui que o método é Método Kate ou seja para você poder ter acesso a listagem de viagens você tem que fazer um get em ver um barra viagens é interessante né agora Talvez as pessoas que têm mais claras para você bom vou fazer um resumo rápido aqui e eu peço a desenvolvedora conversei Copiou o fio olhou para mim desse Júlio quero buscar viagens ou buscar viagens por região eu pensei vou criar dois serviços o serviço dele estar que pega todas as viagens e o serviço dele estar por região que pega
todas as viagens com filtro de região criei e agora estou aqui criando ao para explorar esse meu software a internet fazer então aqui com a minha te esteja uma pedir remota porque se não fosse uma p remota as pessoas eu teria que cumprir lá o meu código e compartilhar esse código com alguém mas quando eu faço com que ela seja remota eu estou expondo esse para internet OK então o que acontece isso que eu estou querendo aqui agora depois de criado ele vai subir com o serviço e vai ficar disponível em uma url qualquer Ok
nesse caso local host disposição fazer um exemplo 1 2 3 4 a viagem vai então ter acesso ao listar quando a pessoa enviar via Jet uma requisição Júlio não sei onde como a requisição ainda pensa que é uma consulta sendo realizada quero fazer uma consulta de quais são as viagens Então vou chamar Lauriete e vou chamar http://local rosto: um dois três quatro barras vi um barra viagens que é isso que a gente está definido aqui ok ótimo uma vez que eu fiz isso daqui olha só eu tenho aqui uma pré-autorização que eu tô dizendo aqui
tô dizendo que olha só pode aqui chamar as viagens e ter acesso as viagens quem Chamar viaget esse esse and Point e for do tipo usuário a gente vai falar mais para frente aqui no curso também sobre a autenticação e autorização você vai entender melhores por hora para isso o seguinte Só quem pode a viagens é alguém que seja do tipo usuário e que tem credenciais válidas Ok faz agora assim vamos ver o que acontece essa pessoa que fez uma requisição a viagens tem que passar aqui um parâmetro chamado região OK vou dar um exemplo
para vocês de como isso ficaria vou dar que uma inteligência/barra olha só a pessoa teria que fazer uma requisição ou seja uma consulta get it http://Opa http minúscula http://local host: um dois três quatro/ver um bar viagens interrogação região igual a uma região qualquer vou dar um exemplo aqui de Sudeste Ok então é isso daqui que teria que acontecer é isso que eu pessoa desenvolvedor escrevi aqui eu falei que vai existir uma in the Point/vem um barra viagem e estou falando e eu tenho um parâmetro que é o parâmetro região certo que a pessoa pode então
enviar e olha só esse parâmetro região é do tipo string Ou seja é do tipo texto na e aqui outra coisa que é interessante ó Record obrigatório esse parâmetro do detalhe eu tô falando que aqui não falso então eu posso passar a região ou eu não posso passar a região qualquer um dos dois pode funcionar OK então Com região sem região vai funcionar porque foi isso Tupi ou pediu aqui buscar Todas as viagens ou filtrar por região certo então alguém ou seja um software terceiro né ou você utilizando uma aplicação Como costumo vai chamar aqui
o Barra viagens e vai passar aqui um uma região qualquer OK depois disso Olha só o que eu pessoa desenvolvedor estou fazendo eu tô vindo aqui eu tô dizendo olha dado que a região ela é um parâmetro o que ele não é obrigatório eu ele pode vir hora na hora pode vir preenchido com alguma região por exemplo Sudeste hora pode vir nula aí eu venho aqui falar olha se for Lula Liste todas as informações e aqui eu tô nada mais nada menos do que chamando os meus service que eu tinha criado antes certo vou colocar
aqui só para você se lembrar método listar do viagem service Ok ou na caso contrário se a região não veio nula ou seja veio preenchida eu vou fazer então o meu viagem service utilizando o método buscar por região e passando a região se você se esqueceu disso também tá aqui ó buscar viagens por região Tá certo então aqui se por acaso a viagem não veio no ou seja meu preenchida que eu busco por região entendendo aqui o que eu pessoa desenvolvedora fiz eu simplesmente expus aqueles dois métodos do serviço se a pessoa que está fazendo
uma requisição na minha prima mandou a região eu busco pela região se não mandou a região eu gosto todos é isso que eu estou dizendo que que eu faço aqui agora na minha perversa depois de ter feito isso eu então retorno uma uma resposta para quem fez a chamada tô dizendo o seguinte o status dessa minha resposta é o que ok em quando a gente fala sobre status ele significa o código 200 200 é o que e apresenta também corpo aqui para mim a resposta que vai ser a viagem Luis fonsi que é nada mais
nada menos do que as viagens e trazidas como resposta dos meus serviços olha só essa dica que é sensacional para você Ok quando a gente fala sobre um AP preste ela tem essas representações aqui essas recomendações como por exemplo métodos se você tem um se você tem um método que você deseja buscar algo e essa busca ela não é afeta o servidor no ponto de você mudar o estado atual dele ele é um jet então por isso que aqui escolheu siguete porque a gente tem apenas buscar informações de viagens a gente não quer alterar uma
viagem ou inserir uma nova viagem por isso é um jet a gente a muguet em apenas oeste de um método seis porque ele não altera o estado do Servidor OK outra coisa muito importante aqui para vocês quando a gente recebeu essa requisição foi muito simples foi quiet e o endereço de uma url com ou sem a região no final é mas quando ele devolve a informação para quem o chamou que é esse momento aqui do reclame a gente tá aqui ó devolvendo o status code o status todos gente também vai aprender na próxima aula a
gente vai prender aqui existem códigos que representam as respostas Ok o que aconteceu após o processamento um Oque significa um ok é o código 200 ou seja 200 significa ok ok ok ok é próximo ao a minha após o processamento eu tive sucesso simples assim Ah e por fim toda a resposta que eu devolvo para quem chamou a minha abrir essa ela vem por recomendação do resto Em um formato Jackson que também a gente vai na próxima aula esse formato de som basicamente trans pra nós não é uma uma representação textual de quais são as
viagens que existem aqui dentro do meu da minha aplicação e que foram retornados pelo meu serviço Ok então lá em vez de vir em jarra e Ruby e java script seja o que for ver em formato de Jackson e o formato de som é reconhecido pela maioria das linguagens de programação logo se eu tenho uma BIOS ou se eu tenho uma um sofre que eu quero consumir nessa ter essa eu faço uma requisição como eu mostrei pra vocês essa mulheres daquela determinada o r é muito com o olhinho para metrô não região quando eu tenho
a resposta bem Jackson então eu software processo esse Jackson e apresenta essa informação seja aonde for nesse sábado se fosse mar interface gráfica fazendo requisição a api rest é esse que aconteceria pegar daquele jeito procissao e mostrar para o usuário de uma maneira mais elegante mais clara mais fácil de visualizar bacana né então tem um queria mostrar para vocês nessa aula é o que há por detrás de uma requisição em Julho Logo no início a gente traz aqui essa questão de arquitetura sim porque porque você para você conseguir se destacar é importante que você saiba
o porquê aquilo vai conseguindo daquela forma como vocês vem aqui o meu piu aqui nesse caso pediu que tivesse a possibilidade de estar ou de estar por região e implementei isso em serviços só que o serviço estava implementados em Java eu precisava expor isso para o mundo por isso que eu queria aquela interface do meu controlador Seguindo os conceitos de resto e agora eu tenho map remota rest full que está aqui nesse caso dando para softwares externos a possibilidade de consumir de entender o que a listagem na diz ter acesso ao estádio de viagem só
licitada de viagens por região E durante as próximas aulas a gente vai toda vez que falar sobre requisições ou respostas ou que está acontecendo dentro da pele se lembrar desse serviço aqui e desse repositor e dessa forma isso vai ficar gravado na sua mente se você ainda não está no grupo do telegram de acompanhamento aqui desse curso inscreva-se é bem simples na descrição aqui do vídeo você pode clicar e ter acesso ao link que te leva direto o grupo onde eu estou junto com o outras pessoas que também estão aqui assistindo esse curso para que
vocês possam aprender mais ou tirar dúvidas sobre o que tá acontecendo aqui nas aulas se você não quer entrar lá deixa sua luta aqui no comentário também pode eu posso responder para você e te ajudar a você entender melhor eu tirar alguma dúvida outra coisa que você não pode esquecer é de voltar e assistir todas as aulas caso você ainda não tenha feito isso é o mais importante para você fortalecerá sua BA o vídeo do ensino aqui que eu tenho passado para vocês nesse curso gratuito de introdução ao teste de abrir essa que basicamente é
o seu caminho Inicial como a se tornar um especialista em teste de abrir essa um grande abraço a gente se vê na próxima aula até lá e