00:00:00
[Música]
00:00:06
então agora a gente vai falar de
00:00:08
westling essencialmente o resto uma pay
00:00:11
rastream que respeita os conceitos da
00:00:14
arquitetura West e arquitetura West é
00:00:17
representational state transfer Ou seja
00:00:19
é uma transferência de estado de
00:00:22
representacionais né e o que que isso
00:00:24
significa na prática na prática Isso é
00:00:27
uma maneira de construir uma pi uma
00:00:29
maneira de você estruturar quais são os
00:00:32
recursos que aquela piu utiliza E como
00:00:34
você utiliza os métodos daquela api e
00:00:37
aqui a gente tá falando essencialmente
00:00:38
já de uma de uma arquitetura cliente
00:00:40
servidor onde o http que a gente
00:00:43
explicou no outro vídeo é aplicado para
00:00:48
a gente comunicar o cliente os servidor
00:00:49
e fazer as alterações que a gente
00:00:51
precisa no servidor E por que que esse
00:00:53
negócio é importante né isso é
00:00:54
importante porque é de certo modo é uma
00:00:57
maneira que a gente encontrou uma
00:00:58
umulação que a gente encontro de
00:01:01
garantir que a comunicação as apis
00:01:04
disponibilizadas por uma aplicação né
00:01:06
Quais são as interfaces ali Elas têm uma
00:01:10
lógica consumida por trás delas que ela
00:01:14
é genérica o suficiente para ser
00:01:16
reutilizada várias vezes e o que que a
00:01:19
gente quer dizer com isso né Então vamos
00:01:21
pensar lá numa aplicação de conta
00:01:23
corrente eu posso criar conta depois eu
00:01:26
posso recuperar os dados da conta e
00:01:28
depois eu posso recuperar os Extratos da
00:01:30
conta ou né
00:01:32
a composição né do saldo extrato da
00:01:35
conta
00:01:37
posso fazer uma transferência para
00:01:39
recuperar os dados de uma transferência
00:01:41
e assim vai
00:01:42
quando você tá fazendo aplicação
00:01:45
naturalmente você precisa muitas vezes
00:01:47
dos dados de algumas maneiras
00:01:49
ligeiramente diferentes isso acaba
00:01:51
fazendo vamos falar que eu tivesse uma
00:01:53
função que chamasse o dado lá da minha
00:01:55
aplicação então recupera o extrato da
00:01:57
conta agora recupera status da conta é
00:02:00
dia a dia recupera status da conta
00:02:02
último mês se você começa a construir
00:02:05
várias vezes essa mesma função de
00:02:07
recuperação de extrato da conta que
00:02:10
acontece que você acaba tendo várias
00:02:12
vezes o mesmo código e isso significa
00:02:14
que daqui a pouco você vai ter vários
00:02:16
recuperes da conta e você nem mais sabe
00:02:18
qual é a diferença entre eles você
00:02:20
Obviamente você vai poder abrir o código
00:02:21
e olhar a diferença entre eles mas para
00:02:24
quem bate o olho de fora não é um
00:02:26
negócio que você sabe qual é a diferença
00:02:27
entre eles e isso não é ideal como eu
00:02:30
vou falar depois em qualidade de código
00:02:32
A ideia é que o nome das coisas
00:02:35
represente com tanta qualidade que
00:02:37
aquilo está representando que quem bate
00:02:40
o olho naquele nome já tem toda a
00:02:42
informação de como aquilo funciona então
00:02:44
o resto vem nessa linha de uma pessoa
00:02:47
que já entende minimamente como é o
00:02:49
conceito S Ele olha para uma pirest E aí
00:02:52
você pode fazer ap de várias maneiras né
00:02:54
mas a gente tenta fazer o máximo
00:02:56
possível
00:02:58
e já entende exatamente por trás daquilo
00:03:01
lá então no caso por exemplo de um de
00:03:04
uma conta poderia dar um
00:03:07
recuperar uma conta ou eu posso
00:03:09
recuperar a conta com o saldo são duas
00:03:11
funções diferentes mas isso não faz
00:03:13
muito sentido eu poderia simplesmente
00:03:14
recuperar a conta e dentro dos das
00:03:18
propriedades que a conta tem eu tenho lá
00:03:20
dentro o saldo como isso traduz em West
00:03:22
né West essencialmente significa que
00:03:25
você opera com os métodos http no
00:03:28
significado que eles têm Originalmente
00:03:30
então eu tô falando aqui de get em um
00:03:32
recurso post em um recurso no
00:03:35
recurso Pet um recurso delite um recurso
00:03:38
é e usar recursos muito claros e quando
00:03:43
eu tô falando de recurso é a ideia de
00:03:44
que existe realmente uma entidade dentro
00:03:46
do banco de dados sobre a qual você vai
00:03:49
operar Então nesse caso que a gente tem
00:03:51
de exemplo agora é a conta então vou dar
00:03:53
um post um recurso barracout e isso vai
00:03:56
efetivamente criar a conta lá do meu
00:03:59
banco do meu banco de dados e nesse no
00:04:02
Vale desse post eu botei ali as
00:04:03
propriedades da conta então também sei
00:04:05
lá o nome do correntista do CPF do
00:04:07
correntista
00:04:09
se aquilo é uma conta corrente se eu
00:04:11
tenho um limite de conta alguma coisa
00:04:13
assim então eu dou um post em barra
00:04:15
counts aqui na QI isso não é apesar de A
00:04:19
grande maioria das apis
00:04:21
utilizarem Jason como a maneira de ser
00:04:26
realizar o dado que vai no Bari de
00:04:27
encodar o dado que vai no Bari Isso não
00:04:30
é um requisito West mas a gente aqui usa
00:04:32
Jason no Bari como uma maneira de
00:04:34
representar um cão um dado que é enviado
00:04:37
por servidor então é post em barracaute
00:04:39
no bar e ver esses campos chegando lá do
00:04:42
Servidor armazena isso no banco de dados
00:04:44
e retorna para o cliente um 200 falando
00:04:46
ok deu tudo certo e a sua conta foi
00:04:49
criada no limite eu posso retornar ali
00:04:51
por exemplo um identificador da conta
00:04:53
então uma count que é muito importante
00:04:56
para pessoa nas próximas vezes que for
00:04:58
operar sobre aquela conta ela tem uma
00:05:01
identificador daquela conta então daria
00:05:02
um 200 e no baile da requisição
00:05:05
que tem pontos que essa calda aqui é uma
00:05:08
chave da conta que por sinal a gente usa
00:05:11
aqui uma coisa chamada guide para
00:05:13
identificar cada conta retornou essa
00:05:15
conta eu posso querer por exemplo
00:05:17
recuperar aquela conta como seria para
00:05:20
recuperar aquela conta seria Barra
00:05:21
seghetti em
00:05:24
barracoutski ou seja nesse momento se
00:05:28
criou na cabeça de quem tá usando e no
00:05:31
conceito do software
00:05:33
uma entidade conta dentro do Servidor
00:05:36
que é identificada por aquela counts
00:05:38
Skin então tô fazendo um get naquele
00:05:39
recurso que aquela Country E aí ele vai
00:05:41
simplesmente batendo no banco de dados e
00:05:44
já recuperar na maneira como a gente
00:05:46
representa mesmo no post é importante
00:05:49
manter essa consistência em como você
00:05:51
representa uma entidade ao longo da sua
00:05:53
fi vai recuperar os dados e vai entregar
00:05:56
um Jason lá que vai ter o nome do
00:05:58
correntista o documento do correntista e
00:06:01
assim vai como um extra eu posso ter ali
00:06:03
um campo chamado balance que é o saldo
00:06:06
daquela ou seja vou dar um get naquela
00:06:08
conta e vai retornar também o saldo
00:06:11
inicialmente Zerado esse negócio vai
00:06:13
mais longe eu posso dar um get em barra
00:06:15
acalmes isso vai me recuperar a lista de
00:06:19
contas isso é relativamente um padrão
00:06:22
resto E aí isso vai me recuperar por
00:06:24
exemplo para fazer uma listagem de tela
00:06:26
para mostrar todas as contas que alguém
00:06:28
tem vamos falar que eu vou aplicar agora
00:06:30
um filtro em quais contas eu quero
00:06:32
recuperar eu quero recuperar só as
00:06:33
contas cujo número do documento CPF do
00:06:36
correntista é x eu vou colocar
00:06:39
cat/cauts ponto de interrogação doc me
00:06:43
number igual ao número do documento o
00:06:45
que que isso significa esse depois do
00:06:48
ponto de interrogação que você já deve
00:06:49
ter visto em páginas da web tudo que vem
00:06:52
depois do ponto de interrogação é o que
00:06:53
a gente chama de ou seja um parâmetro de
00:06:56
busca e aí eu tô passando docker igual a
00:07:01
x eu tô falando que eu quero aplicar um
00:07:03
filtro onde o número do documento seja
00:07:05
igual a x E aí que eu fizer isso vai
00:07:07
chegar no servidor e ele vai entender
00:07:08
Ele tá tentando recuperar todos os
00:07:11
recursos de conta aplicando esse filtro
00:07:13
documento e aí ele vai me retornar todas
00:07:16
as contas que tenha que respeitam aquele
00:07:18
filtro isso para uma criação de conta e
00:07:21
tal muito simples e aí a gente pode ir
00:07:23
para os outros conceitos dessa pi de
00:07:24
conta então post em uma transação
00:07:29
eu vou ter muitos dados
00:07:32
eu entendo que essa transação ela é uma
00:07:35
entidade que opera dentro de uma
00:07:37
determinada conta Ela não é uma entidade
00:07:39
solta a trans Action está dentro de uma
00:07:41
conta como que isso pode ser feita eu
00:07:43
posso ter um post em barracão
00:07:47
ou seja Estou criando um recurso de
00:07:50
transação dentro de uma conta
00:07:52
identificada por aquela
00:07:54
quando eu faço isso eu vou passar no
00:07:57
baile da requisição os parâmetros
00:07:59
daquela conta então o valor a conta de
00:08:01
destino e assim vai e isso vai chegar no
00:08:04
servidor e eu vou executar Ok dei um
00:08:07
post aquela transação o servidor vai me
00:08:09
devolver um 200 Se der tudo certo e
00:08:11
possivelmente vai me devolver a trans
00:08:13
Action que para caso um dia eu queira
00:08:15
recuperar os dados daquela transação eu
00:08:18
consigo recuperar a partir dessa trans
00:08:20
Action que como eu posso recuperar
00:08:23
get/caute que barra trans Action aqui
00:08:26
essa é uma possibilidade e
00:08:29
implicitamente reparem que eu tô
00:08:32
ditando que aquela trans Action que está
00:08:35
necessariamente dentro daquela conta ou
00:08:37
eu poderia dar um bar que um Action
00:08:39
barra trans Action que sem citar são
00:08:42
dois caminhos diferentes nesse ponto
00:08:44
fica meio amplo aí de como seria mais
00:08:46
resto mas os caminhos se interlaçam
00:08:50
quando eu quero falar por exemplo
00:08:52
Imagine que tem uma camada de
00:08:53
autorização em cima e tô querendo saber
00:08:55
se aquela pessoa pode ver aquela
00:08:57
transação antes disso eu preciso saber
00:08:59
se aquela pessoa pode ver aquela conta
00:09:01
então a gente começa ali a trabalhar um
00:09:03
pouquinho em outros aspectos de
00:09:04
arquitetura de de autorização que é um
00:09:07
negócio super importante por último Eu
00:09:09
quero puxar o extrato né então o que que
00:09:13
eu vou fazer barra o extrato ele pode em
00:09:16
Essência se ele é em Essência dentro da
00:09:19
conta ele é uma propriedade da conta mas
00:09:21
eu posso entender ele também como um
00:09:23
recurso eu posso tanto bater em barra
00:09:26
counts/coutsky e dentro da conta eu
00:09:29
tenho um campo que é Statement e lá
00:09:31
dentro ter todas as transações que
00:09:32
afetaram aquela conta ou posso ter um
00:09:35
barracout barra count que barra state eu
00:09:38
dar um get nisso E aí vai me voltar
00:09:40
diretamente o extrato repara que nenhuma
00:09:42
das duas deixa de ser resto porque ambas
00:09:45
eu tô usando os métodos http para operar
00:09:48
sobre recursos que são representados
00:09:49
dentro do Servidor Então
00:09:52
ela é essencialmente
00:09:54
isso segue também para pet para
00:09:58
então o pet quer dizer que eu estou
00:10:00
atualizando um campo da county para que
00:10:03
que eu vou usar o pet Então vou dar um
00:10:05
pet em Barra count/couts ou seja estou
00:10:08
atualizando um campo da conta que eu
00:10:10
estou querendo atualizar e eu tô
00:10:12
atualizando lá no Vale da requisição vou
00:10:14
mandar o nome do correntista E aí eu vou
00:10:15
atualizar o nome do correntista e esse
00:10:18
vai me perguntar qual a diferença entre
00:10:19
Pet e a diferença entre Pet e é
00:10:23
que o pet atualiza um campo e o em
00:10:26
tese ele substitui o recurso que está no
00:10:29
servidor isso não é muito respeitado no
00:10:32
geral em termos de West mas em Essência
00:10:35
deveria ser isso
00:10:37
então voltando lá essencialmente Oeste
00:10:41
São algumas regras de boas práticas tá
00:10:44
não é como soube que é um protocolo
00:10:47
muito bem definido o resto é um pouco
00:10:49
mais solto que é uma arquitetura que a
00:10:51
gente se a gente respeitar ela no geral
00:10:54
as nossas apeis vão ter menos endpoints
00:10:56
ou seja vou ter menos chamada de IPI eu
00:10:59
vou ter um código mais simples porque
00:11:01
uma única vez eu vou fazer a recuperação
00:11:03
dos dados da conta por exemplo é e para
00:11:07
o meu cliente talvez essa seja a coisa
00:11:09
mais importante é ele só vai bater o
00:11:12
olho na minha pi e rapidamente vai
00:11:14
entender como eu opero porque esse já é
00:11:17
um padrão também bastante
00:11:19
disseminado na internet em geral e que
00:11:23
com o advento do rest mas o Jason fez
00:11:26
essa tornarem muito simples Então esse é
00:11:29
uma das grandes vantagens do resto Então
00:11:31
é isso na próxima conversa aí vou falar
00:11:34
um pouquinho de resto super frente
00:11:37
porque aparece muito isso aí e é uma
00:11:39
coisa que mexe muito com aspecto
00:11:41
Cultural de como a gente faz software
00:11:43
então vou falar um pouquinho de West
00:11:44
versus