Design profissional da API RESTful com o Python Flask | Jorge Escobar | Skillshare
Menu
Pesquisar

Velocidade de reprodução


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

Design profissional da API RESTful com o Python Flask

teacher avatar Jorge Escobar, Technologist, entrepreneur and open source fanatic

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 1.1

      1:07

    • 2.

      Introdução 1.2

      1:09

    • 3.

      Definições de API

      10:39

    • 4.

      Interface de uniform em detalhes

      13:21

    • 5.

      Configure o ambiente de principal

      2:24

    • 6.

      Estrutura de contêiner básico

      7:30

    • 7.

      Como executar os containers

      4:50

    • 8.

      Visualizações de dois de som,

      12:22

    • 9.

      Como instalar e usar o poste

      7:03

    • 10.

      Nosso primeiro POSting

      9:10

    • 11.

      Código de status em HTTP

      8:53

    • 12.

      Um CRUD de real

      9:21

    • 13.

      12:03

    • 14.

      Autenticações simples

      6:55

    • 15.

      Testando nossa autenticação simples

      7:16

    • 16.

      Modelo de API e de endpoints da API e da

      14:22

    • 17.

      Visualizações de API no Token e decorador

      6:07

    • 18.

      Instale de crypt e de de que a de e em

      14:00

    • 19.

      Como criar os testes do aplicativo

      7:42

    • 20.

      Testes de Token

      4:48

    • 21.

      Como começar o ponto de fim da loja

      3:24

    • 22.

      A Biblioteca de Schema do JSON

      8:42

    • 23.

      O arquivo da API da loja

      6:34

    • 24.

      Como experimentar o ponto de fim da loja

      8:17

    • 25.

      Implementando a colocação e a aplicação de

      10:38

    • 26.

      Como implementar a Paginação em GET em todas as lojas

      7:52

    • 27.

      Loja de testes

      11:42

    • 28.

      CRUD de ponta de ponta de OS de ponta de OS de

      9:34

    • 29.

      Testes de de de animais de a final, POSde e poste

      10:15

    • 30.

      Animais de a postagem e exclusão

      4:52

    • 31.

      Testes de animais

      7:45

    • 32.

      Tests de Paginação de de os de de de a

      3:13

    • 33.

      Obtenha todos os animais em um de a de uma loja

      8:52

    • 34.

      Teste o de de obter todos os animais em um de de de loja de de em

      5:27

    • 35.

      Pesquise Pesquisar de animais com filtros

      7:22

    • 36.

      Conclusão

      1:18

  • --
  • 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.

563

Estudantes

1

Projeto

Sobre este curso

Este curso vai ensinar como construir uma plataforma de API profissional com o de a a you pura, sem a de os clientes para que os alunos possam aprender os fundamentos do design do to de de API

No mundo de hoje, de a de hoje, de a de a de hoje, de a capacidade de criar uma API de espara a escalável e bem arquitetado para a a que a de de a de e a sua de a que os de de de e que os de de de e e que os de de de e e que os de e de que os de e de e as que são os clientes e os de quem e os de quem e de de de que as e os de máquinas e de eles e os clientes e os servidores se comunicarem com as relações

O curso aborda os conceitos básicos do padrão de AP, de of de API e em seguida, entrar em detalhes e passo a passo na construção de uma plataforma de API que vai cobrir as seis restrições da arquitetura. Os estudantes vai aprender o padrão do padrão do mercado e seguir as melhores práticas para arquiteturas de API.

Se você já já tiver conhecimento do básico do Flask e está em como projetar, arquitetar e criar uma plataforma de APi, este é para você.

O curso é dividido em duas seções:

  • Introdução que que aborda todos todos os conceitos necessários para entender o que é uma API is e de seis restrições e as em a que é a

  • Um explicação passo a passo a passo e a a base de a de Pet

O curso tem mais de mais de 5 horas de tutorial de vídeo e o código no final de cada seção, para que você pode seguir com o processo de codificação.

O curso pode levar de em qualquer de qualquer lugar para a parte de qualquer lugar para completar com a quantidade de material que o aluno a a cada dia a parte.

Além disso, estamos constantemente atualizando o curso, adicionando conteúdo com o feedback de nossos estudantes.

Junte-se neste curso e continue a o seu caminho para se tornar em um desenvolvedor de web de backend profissional!

Quais são os requisitos?

  • Um computador com acesso com acesso à internet e acesso administrativo para instalar os pacotes
  • Bom entendimento de como usar a interface da interface da linha de de comando, da internet e de código
  • Bom conhecimento do enquadramento da estrutura da web de de o flask

O que vou conseguir com este curso?

  • Você vai aprender os conceitos fundamentais para a criação de as plataformas de API de for para
  • Você vai ser apresentado aos a as restrições de API de will
  • Você vai aprender como configurar uma camada de API de autenticação
  • Você vai aprender como criar a API de de forma eficaz

Quem é o público-alvo?

  • Programadores e desenvolvedores com conhecimento de de um de de a de de de o de de de e a criação de as pessoas de as pessoas de and de o de
  • Arquitetos de aplicativos que quer entender melhor como criar aplicativos de API
  • CTOs de Startup que quer entender as melhores práticas para o design da API
  • Os estudantes de de a de computador que quer se expor à sua de dados de as

Conheça seu professor

Teacher Profile Image

Jorge Escobar

Technologist, entrepreneur and open source fanatic

Professor

From Zero is an educational project created by Jorge Escobar, a technologist, entrepreneur and open source fanatic with more than 15 years of experience in the development of web applications in New York City.

Jorge has worked in well established companies like Yahoo!, Univision and MongoDB and has also been the technical founding member of various successful tech startups that have received multiple rounds of venture capital.

The biggest problem Jorge has experienced during his career is finding well rounded developers and he interviewed hundreds of them for positions in the teams he was leading. A constant pattern (no matter if candidates came from a good university or had a few years of experience) was the lack of practical, real world knowledge.

That's why Jorge... Visualizar o perfil completo

Level: Intermediate

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 1.1: Oi e bem-vindo ao descanso profissional. Será AP I projetar usando apartamentos FIFA. Eu gostaria que nenhum AP ice fosse a camada de interação entre seu banco de dados em seus clientes. No entanto, não é tão simples construir um bom FBI que são certos conceitos fundamentais que você precisa entender. É disso que se trata este curso. Vamos começar com uma teoria eo conceito necessário para você entender o que uma boa receita senhora. Eu deveria ter ido em detalhes cobrindo a partícula, e então passamos para realmente codificar do zero e sem usar qualquer descanso para biblioteca . Uma plataforma AP I robusta que aproveitará esses conceitos fundamentais e os colocará em prática. AP I tipo de a parte mais importante de conhecimento que um desenvolvedor de aplicativos de apoio moderno precisa ter em seu bolso e este curso lá no caso de você vai aprender a maneira certa como com sucesso o arquiteto sinal e código um peito compatível padrão prato. Aqui. Te vejo lá dentro. 2. Introdução 1.2: mais alto. Bem-vindo ao profissional rest ful ap. Eu desenho usando balão de bisão. O que queremos realizar neste curso? Bem, queremos construir um aplicativo AP completo a partir do zero. Isso segue os padrões da indústria. Vamos primeiro olhar para a teoria por trás de como o FBI é detido. E então nós vamos codificar cama por cama e um passo a passo, uma aplicação de frasco que tem todos os padrões da indústria fora de um P. I serviço um dos pré-requisitos que você precisa saber. Noções básicas sobre Python. Você deveria saber o frasco. Introdução e avanço. Como sabe, tenho dois bons cursos. Um para introdução ao balão no outro, um curso de aplicação de balões mais profissional. O que você precisa para completar o curso? Você precisa ter um computador que tenha o cliente de encaixe mais recente instalado. E vamos instalar o banco de dados Mongo do serviço de docker como nosso banco de dados e, claro, frasco. Então vamos começar a jornada 3. Definições de API: Oi e bem-vindo ao profissional descanso ful AP I design usando frasco. Meu nome é Jorge Escobar e eu serei seu instrutor neste novo emocionante curso onde vamos explorar como construir eficiente em serviços A p I profissionalmente projetados para qualquer coisa que você precisa em um P I quatro pode ser para alimentar uma plataforma que você quer que outras pessoas interajam com elas. Ou você quer ter pessoas para, ah, ah, consumir isso através de um aplicativo móvel, que é um caso de uso muito comum para AP ICE hoje. Então vamos começar. Então, o que é um P? Quero dizer, então AP I significa interface de programação de aplicativos, e é um conjunto de rotinas, protocolos e ferramentas para construir interações entre clientes e servidores. E o que isso significa é que você está criando uma camada de comunicação entre seu aplicativo, sua plataforma e algo lá fora que está consumindo os dados e interagindo com eles. Por uma questão de fato, você pode ter um FBI que está certo apenas onde você está dando. Essa é uma informação meteorológica para as pessoas que querem obter, se para a sua para seus locais específicos, ou você pode fazer como uma leitura, Escreva um p I. Onde você tem um você sabe, aplicativo social onde você está criando usuários e você está lendo e escrevendo postagens e coisas assim. Então é sempre este conceito de ter que separar entidades um cliente em um servidor que está falando através desta camada através desta especificação Ah, um ou um modo especificado de comunicação que é chamado de um P I. Então, Uh, o que é descanso? Descanso significa representação. Transferência representacional do Estado. Eu preciso de estilo arquitetônico hiper media em rede. Tipificado, a propósito, que significa que, digamos, você tem um P I, e talvez eu possa ter qualquer forma. Mas quando você diz prender o FBI completo, a conotação lá é que você está usando a abordagem de estilo Web é ser capaz de servir esse conteúdo, para ser capaz de interagir com esses clientes, e nós vamos ver um pouco fora mais informações sobre isso. Mas a coisa chave aqui é que você pensa sobre os objetos ou os dados. Havia seu retorno como se fossem páginas da Web com alguns metadados para, tipo, próximo na página anterior e coisas assim, e também você precisa pensar sobre a maneira como você interage. O cliente rastreia com sua plataforma está usando verbos HDP. Então obter post, que já vimos em outros cursos de gripe. E então temos outros como colocar e elite, que não são tão comuns a não ser que você esteja começando a trabalhar em um olhar A P. Então vamos dar uma olhada no que os seis restringem o resto estrangeiro. Talvez eu pareça, então você tem que ter uma interface uniforme. Ele tem que ser apátrida. Tem que estar na moda. Ele tem toe em conformidade com o padrão do servidor de declínio. Tem que ser um sistema em camadas opcionalmente. Dá casaco no homem. Então vamos ver cada um deles em alguns detalhes. O 1º 1 que é interface externa única. Vou explicar-te em A numa segunda lição, porque acho que é um coração de descanso Will FBI. Então eu quero, tipo, entrar em detalhes sobre isso. Então vamos lá em um segundo. Então, o próximo é... Aátrida . Então, o que significa o apátrida? Isso significa que o resto Ah ah, pedido que você está dando para a sua plataforma são basicamente instâncias isoladas que eles não têm um dedo do pé de sessão ir com ou eles não sabem o que aconteceu antes ou o que vai acontecer, Você sabe, depois, e ele não gosta, você não pode identificar que essas solicitações dizendo, Oh, Oh, este é o usuário X Y C Stateless significa que toda vez que você faz uma solicitação, tudo o que você precisa servir ou para atender basicamente essa solicitação precisa ser incorporado em que você sabe, solicitações de saída ou de entrada. E então você vai fornecer de volta com base nesses parâmetros os dados que essa solicitação está precisando onde estamos exigindo, modo que isso significa que cada solicitação é uma nova entidade própria. E ele não sabe nada sobre, você sabe, passado de recursos ou o que aconteceu até agora em termos fora do, hum do fluxo de trabalho eso que apátrida capturável. É como se você pudesse pensar mais ou menos em descontar, que é o que écomo armazenar cópias estáticas fora do pedido. Isto está relacionado com isso e o que resto AP ICE deve confirmar é que você deve dizer recusado. Isso é pedir o seu conteúdo. Se eles podem sacar ou não dinheiro o responsivo, dando-lhes para que, hum, você pode ter uma plataforma mais escalável. E isso é como relacionado com, digamos, se você tem milhares de pedidos, você sabe, por segundo, mas você poderia dizer declínio, por exemplo, que Sam solicitando John aqueles, Você sabe, perfil. Esse perfil não está mudando o tempo todo. Assim, você pode dizer ao cliente quando você retornar as informações do perfil. Ei, você sabe, você pode descontar esse pedido ou armazenar esse pedido rictus localmente por, digamos, um dia para que reduza o número fora do pedido que você está recebendo dessa subida porque talvez outro usuário está solicitando o mesmo. Sabe, John, esses perfis e você não precisa regenerar e reaquecer o banco de dados e tudo mais. Você pode deixar o cliente decidir que você sabe que ele pode. Eles podem descontar essa informação e a forma como você dá essa informação ao cliente é basicamente através do controle de dinheiro. HDB fez um cabeçalho de dados. E como você pode ver nesse exemplo, você está dizendo que Max H é igual a 120, o que é como segundo. Então isso significa que o pedido que estou lhe dando de volta ou a resposta. Estou devolvendo você pode guardar em segurança por dois minutos. E não haverá mudanças nesse meio tempo. Então, você sabe, estar confiante que você pode, você sabe, você não precisa, tipo, tipo, solicitar esta informação de volta em 120 segundos. Hum, então lá em seguida, hum, ir estranhos servidor cliente. Então clientes sempre significa que, hum, há uma separação entre a supressão de preocupações entre o cliente e o servidor,o servidor, que significa que o cliente não sabe o que o, hum, o que o servidores tipo de configuração. É como, qual banco de dados estão usando ou o quê? Hum, o que é isso? A estrutura dos dados que não pode pensar que é como completamente separada da mesma forma que o servidor não está interessado ou não tem que saber que o cliente é um iPhone seis s ou um telefone Android ou um sistema automatizado que está recebendo informação. um tipo de coisa de fogo no Twitter. O servidor é que não sabe nada sobre o cliente. E cada vez que eu pedir, você só vai gostar de informação por cento baseado no pedido de volta para o cliente. Então, sabe que não se preocupa com a aparência do cliente. A próxima restrição é o sistema de camadas. E isso é falar sobre, você sabe, um cliente não pode dizer quais são as camadas ou o que é o conjunto de por trás do pedido que você está dando a eles. E isso pode tipo de permitir que você faça, tipo, tipo, balanceamento de carga e tenha vários servidores de aplicativos, ou até mesmo ter servidores de caixa prontos que estão servindo versões em cache fora das informações? O cliente não sabe disso. Então, por exemplo, neste gráfico, você pode ver que há como, você sabe, a nuvem é Internet, e então a caixa preta no lado esquerdo é um cliente, e, você sabe, ele é como fazer um pedido mais antigo para o servidor. O servidor é os livros negros à direita, e, em seguida, o servidor tem um banco de dados que pode ser como servir esses pedidos ou pode estar servindo esses pedidos através como eu disse camada Scotch já. Então, realmente não importa como você apresenta essa informação de volta, e isso lhe dá a capacidade de escalar sua plataforma A P I sem quebrar, você sabe, como as graciosas restrições AP I. Então, Então, o último e este é opcional. E para ser honesto, não é usado. Ah, muito. É chamado para o homem e chamado O homem é basicamente você sabe como antes, você sabe, na Web, na Web, como talvez alguns anos atrás havia como applets Java e os animais de estimação Java eram como auto-contidos pouco programas que estavam executando o no seu navegador. E ele era como um pouco talvez um pequeno relógio ou um relógio, você sabe, ou um pequeno jogo ou significado alma jogo, o A P Eu vou lutar com um B I, hum spec diz às pessoas que eles podem, você sabe, fornecer não apenas objetos de dados, mas eles também podem fornecer trechos de código. E eu podia ver isso, como sendo, hoje em dia, talvez um flash, um mini aplicativo flash ou algo assim. Mas não é muito usado. E essa restrição de país, não é como algo que você vai usar com frequência. Hum, então isso é que é para, você sabe,as você sabe, cinco restrições mais baixas. Então eu vou falar com vocês sobre a interface de uniformes no seguinte menos e assim ficar por perto 4. Interface de uniform em detalhes: Bem-vinda de volta. Então vamos continuar olhando para as, uh, as restrições, e vamos olhar para a restrição de interface uniforme, que eu sinto que é o mais importante. Então vamos ver como isso se parece. Assim, a interface uniforme é dividida em quatro partes. Um deles é baseado em recursos. O segundo é a manipulação de recursos é através de representações. O terceiro ano de mensagens auto-descritivas e o quarto é hiper mídia como o motor fora aplicativo, estado ou ódio deve. Então vamos passar por cada um desses. Assim, para o recurso baseado, este é basicamente todo recurso é identificado. Usando você é subir como recurso identifica. Então o que esse tipo de tradução para é que as ações que você vai tomar ou as solicitadas que você vai fazer são ordenadas ou tem um A Cherokee e estrutura através do seu olho. E seus olhos, você deve se lembrar, é a parte do euro do euro que não tem o H dois b seja lá o que for. Qualquer parte do servidor ponto com. Então você tira isso da primeira barra e, isso é que você ou eu, hum, e hum , isso é que vai dizer fora de que tipo de pedidos ou o que você está solicitando? E você vai projetar seu A P I usando esses seus L ou seus olhos como sua estrutura . Então vamos ver um exemplo. Por exemplo, se eu bater um p i barra b uma barra borda Então isso é um novo seu I. Mas o que você está olhando aqui é que você está odiando a seção A P I do site. Você está odiando a versão um do A P, e você pode ter. Sabe, cara, são múltiplas versões. E agora você está vendendo dizendo ao AP que quer obter uma lista fora dos pedidos. Então, como você pode ver aqui, há alguns que você sabe, é como uma chave aqui, e há uma estruturação deles que o p I está definindo através de um bom, hum, estruturando fora do seu olho que você vai usar para solicitar informações. Mas vamos ver outro exemplo. Então este é agora eu estou olhando para um P I V um pedido 15 44. Então, como você pode imaginar, 1544 é uma ordem então o que você está dizendo aqui é que me dê os detalhes sobre este distúrbio sozinho. Isso mais de 15 44. E como você pode começar a ver, há uma estrutura lá. Se você receber ordens, só que você vai ter provavelmente uma lista de todas as ordens que eles até acertam ordens. 50 44. Você vai ter apenas os detalhes do que dessa ordem tão elegante e profissionalmente ser olhos são criados dessa maneira. Você é e do jeito que eu gosto Pense nisso. Isso são ordens? O frasco está pronto? Considerando que nós temos, você sabe, as ordens de pasta e, em seguida, dentro você tem modelos de uso, testes, etc, que deve mais ou menos coincidir com a primeira parte disso, você ou eu, e então o segundo 1 é mais como um eu gostaria, você sabe, é uma espécie de vista. Oh, nosso controlador tipo fora situação em que você está ou se você está passando que eu d então então apenas retornou que eu d. Então nós vamos ver essas coisas na prática quando começarmos a trabalhar no nosso FBI. Então, Então, a única coisa que você precisa pensar também nesta corrente do golfo da restrição de recursos é que eles são recursos é que o seu, hum, hum, que você está enviando para o cliente separado do das representações ou ou estrutura que o recurso tem dentro do seu A P I. Então, por exemplo, quando você solicita ordens e, você sabe sem o I d, você está não vai ficar como uma consulta vai obter, como todos os semelhantes, os campos que estão no banco de dados, você vai obter algumas informações de estrutura e que geralmente tem uma, hum, uma estrutura que é definida dependendo como o cliente se parece. Se é, ah, é um computador se é um aplicativo móvel ou o que eles precisavam especificamente. Então, por exemplo, você pode retornar HTML XML ou Jason. Então, mas a coisa a pensar aqui é que você não vai apenas, como despejar, você sabe, toda a consulta quando você recebe as ordens ou são todos esses campos antigos. Mas você vai como, você sabe, devolver algo que estrutura e que você vai estar definindo na sua definição de um p I . Então o 2º 1 é a manipulação de recursos através da representação, e eles dizem que este tipo de como ele está ligado a como os clientes vão perguntar para que tipo de representações, Hum vai ser jogado de volta para eles ou retornados com base no cabeçalho http exceto que eles estão enviando. Então, por exemplo, um cliente que é um aplicativo móvel pode dizer, Ei, eu preciso das ordens 15. 44 Mas eu quero que no formato Jason seu A P. Eu deveria ser inteligente o suficiente para ler que exceto cabeçalho http que eles estão enviando você e retornou a informação no formato que eles estão perguntando onde nós talvez como ah, Um aplicativo ou cliente baseado na Web ou baseado em navegador pode estar solicitando html. E você vai saber retrocesso em vez das ordens em um Jason Foreman, talvez, ah, trecho de html com o com os diferentes campos fora dessa ordem em formato HTML. Então você é um P. Eu preciso ser flexível o suficiente para acomodar e e e jogar de volta ou retornar informações ou dados usando o thea os dados que o cliente está solicitando. Então o terceiro 1 é mensagens auto-descritivas, e o que isso implica é que o, hum, hum, o pedido em si são representados através do verbo HDP que recusou é perguntar. E nós passamos por um pouco deste curso de frascos de proprietário, que é, você sabe, os pedidos de obter. Lembre-se que quando você faz um pedido get, você envia todos os campos na real Você também tem, como, como, um ponto de interrogação. Você sabe, uh, uh, nome do campo é igual a dados de sentir. Eu sou por cento. Isso disse Tudo bem, isso é novamente pedido. Considerando que um post era mais como dentro do corpo fora do pedido http que você estava enviando , você sabe que os campos reais que você estava, um, um, você estava postando dedo do pé, dedo do pé do servidor, Certo? Bem, em um mundo p I obter post put e elite são, na verdade, eles são o que chamamos de multidão que cria leitura, atualização e operação líder. Então Gadd significa que vou enviar um pedido para obter algo do FBI. Se eu enviar uma postagem, significa que estou criando um novo registro. E eu estou enviando que os dados para isso, para o registro no post, você sabe, payload de dados da porta de solicitação H dois B é um ah, um que nós não usamos muito e você não usa normalmente como na Web , Mas pode ser, como você usa, que é outra atualização. Então você não está criando um novo registro. Mas você está basicamente dizendo atualizar este este registro estes ordem com esta nova informação que é um tem um novo você sabe, total da fatura ou você deseja modificar os itens dentro dessa ordem. Então você usa colocar para fazer isso. Essa atualização na liderança, que é um verbo http real, é como você sabe, você não disse ao Torrey que faz referência. Você quer seguir o recorde de líder, e, claro, você precisa ter a autenticação adequada, e você tem que ter a autorização para os registros ao vivo. Mas se você estiver, se você estiver implementando isso e tiver a autenticação adequada do que você será capaz excluir registros. Então isso são mensagens auto-descritivas. E o último é hiper mídia como o motor fora do estado aplicativo ou ódio ALS, que é um tipo estranho de palavra como. Mas o que isso significa? Quando li isso, eu estava um pouco confuso e não conseguia entender o que eles estavam falando. Mas é em poucas palavras. O que isto é, é que o seu a p i. Se é prenderível um p I. Ele precisa agir como uma página web no sentido de que você pode enviar não só quando você recebe as ordens que você conhece um pedido. Você não está apenas despejando os pedidos de volta para o cliente, mas também está colocando alguns links principais que dizem que há um total de 1500 pedidos. Esta é a página número um. E se você quiser olhar para a próxima página, este é o euro que você precisa acertar. Então imaginem que quando você quando você acertar ordens, mesmo que nós estamos retornando informações do Jason, que é o que nós vamos ser usados reutilizando principalmente pensar que não só tem apenas dados, mas pense nisso como se fosse um aplicativo. É uma página web. E você tem como uma mesa onde você vê a ordem como despejo. Mas são apenas os primeiros 10 resultados, e eles têm, tipo, um anterior próximo na parte inferior. E você também tem, tipo, algum tipo de, talvez apostar pão ralado no topo. Então isso é o que hey faz significa é que você é um B. Eu deveria tipo fora como usar hiper mídia em grandes links e coisas assim tipo de como , dizer ao cliente A que eu estou aqui, mas você também pode fazer essas coisas. Ou se você quiser atualizar o saldo, você pode fazer esta operação, etc. Então vamos ver. Tipo um exemplo disso. um Então aqui temosumpedido para obter a conta número 12345, então a linha de cima é como o que o cliente enviou para o FBI e o HDP 11 200. Certo, é o que o FBI está devolvendo. E como você pode ver lá você tem, tipo, tipo, você sabe, o número da conta, você tem a moeda do saldo, e você pode parar por aí. Você poderia dizer, OK, isso é tudo. Mas desde que você está fazendo hey, faz o seu também ter este link Rehl, que é um real, como HDP válido, você sabe, ou extrema el tagging. E você diz que se você quer passar, você pode fazer uma contagem. 12345 cortar o passe. Se você quiser se retirar, você sabe, e você começa a idéia. Você é como ajudar o cliente a tomar decisões, e isso inclui transferir ou fechar a conta. Mas há outra camada nisso. Então digamos, por exemplo, que agora o ah, este é um condado está sobrecarregado. E como você pode ver no saldo da moeda oh, estão no campo de saldo, você vê isso? É menos 25. Então o P que ouço deve ser inteligente o suficiente para dizer, espere um minuto. Então a única ação que a pessoa pode fazer aqui é depositar como significado. Obter esta conta de volta para, tipo, positivo, certo. Mas eles não devem ser capazes de se retirar. Eles não devem ser capazes de transferir ou não devem ser capazes de fechar esta conta. Então, você sabe, as grandes linhas é o que vamos gostar de fazer desaparecer. E isso é o que você vai obter se eles os saldos da conta são negativos. Então isso é hey, faz direito há como, Você não está apenas retornando dados, você também é como reagindo aos dados que você é tipo de usar para que seu, hum, seu cliente é capaz de fazer o decisões certas, e você é como uma espécie de fio guiando, guiando-os através dos canais apropriados. Hum, então é isso. Isso é que toda a coisa que eu sei que há muito medo aqui, e infelizmente, eu tenho que lutar antes. Eu só dou aos alunos tipo de como esses conceitos enquanto avançamos? Mas acho que mesmo que não tenha conseguido tudo, tudo bem. Você pode revisar isso mais tarde quando tiver feito o curso. Ou talvez, você sabe, revisá-lo. Ah, mais tarde. Mas isso vai te dar tipo de como um muito bom. Hum, você sabe, lidar com isso. Que profissional. Bem, o resto do sinal será que o FBI parece. Então vamos começar a cortejar a nossa candidatura ao FBI. 5. Configure o ambiente de principal: Bem-vinda de volta. Então, nesta lição, vamos começar a configurar o nosso ambiente básico. E como mencionei, vamos usar o Docker, o cliente médico para Mac ou Windows. E se você tiver uma máquina de lençóis, então você pode usar o sistema de encaixe ou a biblioteca para limites. Mas acho que a maioria de nós vai estar trabalhando no cliente de encaixe para Windows ou Mac. Você não precisa conhecer o Dr. em detalhes. Vou passo a passo. A única coisa que você precisa fazer de antemão sempre baixar o médico subiu, hum, hum, para o seu para a sua máquina. E se você quiser saber mais sobre o Docker e aprender mais como você se cansou do seu arquivo de encaixe e você sabe, Docker compor. Eu tenho um curso que você pode verificar. Mas enquanto isso, vamos começar a , vamos fazer coisas que a passo e seguir adiante, então vamos começar. fazer coisas que a passo e seguir adiante, Ok, então a primeira coisa que você quer fazer é ir para Docker Dot com e começar com Docker aqui. E depois disso, você vai conseguir um médico de download para Mac. Se você estiver em um Mac, é claro,e se rolar para baixo, há um médico para Windows também. Se você estiver em um Mac, é claro, e se rolar para baixo, Embora eles devem ser posicionados no sistema operacional que você tem. Mas, de qualquer forma, você baixou isso. E depois disso, você vai pegar o pequeno encaixador Aiken, hum, hum, e seguir apenas as, você sabe, você sabe, as instalações de configuração depois de ter baixado o cliente Docker, hum, e você nós executamos. Devias ver esta pequena baleia ali. E deveria dizer que Dockery está correndo agora. Uma coisa e isso eu mencionei no meu curso você deve ter o volume de compartilhamento que você vai usar para o seu aplicativo aqui. No meu caso, você sabe que eu gostaria de trabalhar na pasta O.P O.P O.P . Então eu tenho o p t. lá. E se você não vê o que você conhece o pai lá, assim como clique em Plus e então vá para a pasta que você quer adicionar e ah, e então, você sabe, aplicar e reiniciar vai gostar, você sabe, Desligue e volte de novo. Portanto, certifique-se de que você tenha verificado 6. Estrutura de contêiner básico: nesta lição. Vamos configurar nosso contêiner base usando o arquivo docker. Vamos escrever uma janela de encaixe, compor o CMO, e também teremos a fábrica de aplicações para a aplicação de carne. Então vamos rapidamente revestir isto. Nós vimos isso configurado em outros cursos, então não deveríamos estar vendo nada de novo. Então vamos em frente e fazer isso, ok? Aqui estamos no nosso terminal, vamos para a pasta O.P . O.P , e agora, não tenho nada lá. Então eu vou criar minha pasta, e eu vou chamar esses animais de estimação Dash de p. Então agora é melhor eu estar lá. Vamos ver o que é e limpar este grande creme com Vamos lá, K e S. Então vamos começar do início, eu acho. Ah, os requisitos. Txt. Então, para que eu faça isso, vou começar meu editor Adam. E aqui estou eu, animais de estimação. Ap I Então, quando eu faço qualquer arquivo e chamá-lo requisitos txt e ah, Requisito 60 tem todas essas bibliotecas. Alguns dos que você já viu, vamos usar o frasco seu 11 script plano encontrar Mongo, frasco do motor Mongo, motor mongo e, em seguida, pela cripta B e Jason Scheme é o único que nunca vimos antes. Mas é uma biblioteca de validação muito útil do Jason que vamos usar. Agora, lembre-se, você precisa colocar todos esses números exatos e bibliotecas nesta ordem para ah você ser capaz de seguir ao longo do curso. Caso contrário, você verá pequenos problemas aqui e ali e ah, e fora do curso. Se você postar alguma pergunta sobre você sabe, alguma biblioteca e você não está seguindo este requisito 60 Eu não vou ser capaz de ajudá-lo . Então, esses são os nossos requisitos. Txt. A próxima coisa que vamos fazer é uma velocidade de ajuste. Por quê? E vamos ter uma chave secreta. Depuração é igual a verdadeiro. E vamos usar Munger para ser anfitrião e Mongo DB Devi. Isso é “ah “para o Flashman. Vai ser e aqui precisamos estar usando Munger TB. Pergunte ao anfitrião. Então é isso. Vamos em frente agora e criar um gerencie b y, que usamos com, uh, o script carne. E mais uma vez, nada muito complicado. Aqui. Dissemos que o caminho onde o arquivo está, então importamos Monier e servidor de script plano criar um aplicativo. Isso é como o método de fábrica ou padrão de fábrica. E então estamos no servidor de drones de comando, que será executado em 4 5000 e finalmente, executamos o aplicativo. Se for se estiver sendo executado a partir do terminal. Então, hum, até agora tudo bem. Agora, vamos criar uma taxa de inscrição Y, e isso vai parecer com o seguinte. Vamos importar garrafa e motor mongo, e então sabemos que começamos a ser viáveis para o motor mongol. Instância, nós vamos ter um criar, um, aplicativo de fábrica, uh, configurando com as configurações B y e permitindo que as substituições do teste começando lá . E depois vamos apenas plantas importantes da vista de casa. Vamos ter um aplicativo doméstico e depois registramos o projeto. Agora, repare em algo aqui. Hum, eu acho que no repositório, eu tenho uma versão ligeiramente diferente disso. Acho que diz “frasco”. Motor mongo Exterior Dottie. Mas começando com o frasco, eu acho que Cyril 10 ou 11 mudou para, hum para ser usado como este frasco no placar. Motor Mongo. Vai funcionar ao contrário, mas acho que vai receber alguns avisos de depreciação. Agora, vamos em frente e criar a pasta pessoal e vamos ter AAA, não é? Arquivo. Eles são para que seja, hum, considere um pacote python. Então não é por isso que não colocamos nada nesse arquivo. E depois vamos ter uma visão aqui. E nós vamos ter o seguinte no arquivo. Quando nosso plano de importação, vamos registrar esse projeto. E eles iam dizer que nessa rota, vamos imprimir “Olá, mundo”. Isso é tão ainda, você sabe, nós sabemos que o contêiner está funcionando corretamente. Ok, estamos quase terminando. Vamos criar o arquivo de encaixe e o arquivo médico. Então eu vou ficar assim. Então vamos ter uma imagem base com 3.4 slim. Vamos executar e apt, obter atualização e instalar essas bibliotecas. Em seguida, fazemos um diretório local no recipiente e disse que perguntou o diretório de trabalho, e então copiamos todo o código que temos aqui. Executar espiando tenda e começar a ouvir 5000 quando começamos o contêiner. E finalmente emitimos o comando por 13 minutos. B y ro servidor, que é Theo o você sabe, o ponto final do script do frasco. Então é quase isso. A última coisa é que o médico compôs piano. Então precisamos que o perseguidor compôs o e isso é o que colocamos lá. Versão dois serviços web com esses volumes instalados. Agora, lembre-se, esses volumes precisam ser os mesmos que você tem em seu computador local. um E então teremosumDB, que é retirado da imagem Mongol 302 e vamos chamar esse contêiner. Betsy P I d. Seja um e os animais de estimação recipiente Web ap I Web um. Hum, e isso tem que ser isso, como seu diretório local. Então, no meu caso, é, hum, esta pasta aqui ups opt apostas, um p I, e que deve coincidir com aquela ali. E então localmente, vamos ter isso lá dentro. Então é isso. É tudo o que precisamos para preparar o contêiner inicial. Então vamos em frente e ah, e construir este recipiente 7. Como executar os containers: Bem-vinda de volta. Então, na última lição, nós configuramos nosso contêiner de encaixe básico que terá tanto um contêiner de aplicativos quanto um contêiner de banco de dados. E agora vamos testar a construção deste contentor e ver se tudo está a funcionar correctamente. Então, vamos começar. Ok, então a primeira coisa que vamos fazer é que vamos ter que nos colocar no O P T. . Ah, aposto é a pasta do FBI ou qualquer pasta que você decidiu que iria usar e ter certeza que você tem seu arquivo de encaixe lá dentro. Além disso, certifique-se de que o DACA está em execução. Acho que não o estou a comandar aqui, por isso vou começar e devo tirar uns segundos e um estudo. Então vamos usar o seguinte. Vamos dizer docker, compor, construir e o quê? Isso vai dar certo. Ele vai ah, olha para o estivador compor. Hum oh, que nós temos aqui e construir essas imagens ou, você sabe, imagens de contêiner que então nós vamos ser capazes de correr. Então vamos fazer isso. Então agora ele está recebendo todas as, hum basicamente as bibliotecas que são descritas no arquivo de encaixe para o para a pasta de aplicativo Web . Ok, agora ele está executando os requisitos. Txt perfeito. Então agora é Ah, foi construído e os contêineres. E agora nós vamos, hum basicamente copiar a cópia não. Errado o manganês ser servidor separadamente do Observador. E a razão para isso é que quando temos que reiniciar o servidor de aplicativos porque nós cometemos alguns erros ou precisamos, como, uma atualização rígida do código nós não temos toe, você sabe, derrubar todos os contêineres de encaixe, traga-os de volta. Vamos fazer isso com o contêiner do aplicativo. Então nós vamos trazer o banco de dados, hum, entre vai estar fazendo médico composto Dia Holandês, que significa demônio e depois DB. E agora o contêiner de encaixe para o banco de dados mongo está sendo executado. E nós podemos verificar isso fazendo Dr P. S. e você pode ver que lá nós temos um, o ah entre ir aqui. Eu tenho um outro recipiente, eu acho que de eu acho que este é do outro curso. Vou parar aquele contentor para não ficarmos confusos. Desligue Wi do Ducker ps. Você vê isso? Entre o DVD está rodando lá. Agora vamos rodar o de servidor deaplicativos. Mas vamos fazer um truque aqui que eu cobri no curso de encaixe que está rodando com a opção de portas de serviço, que nos permite fazer PDB disse rastreamento no contêiner em qualquer pedaço do código. E ele vai parar e nos permitir investigar ou ah, o bug, nossa aplicação. Então vamos em frente e fazer isso. Perfeito. Então ele diz que ele está sendo executado agora em HDB seriamente. Ou 5000 que é o diretório local. Quero dizer, anfitrião local. E se começarmos outro navegador aqui e colocamos host local, temos Olá mundo. Então esse é o nosso contêiner que está funcionando. Podemos verificar isso. Diz no mundo aqui na casa V S B y. Se mudarmos esse dedo Olá, ponto de exclamação mundo e salvar. Devemos ver que isso foi recarregado, que detectou uma mudança. E se recarregarmos a página, você verá a mudança. Eles são tão perfeitos. Temos um contêiner funcionando que tem Mongo DB e um aplicativo Web. Hum, e você verá que ele lista Ah, hum todas as operações aqui nesta janela. Você pode comandar isso como um demônio também se você passar o traço D. Mas por enquanto, nós vamos apenas ah, você sabe, ser felizes e celebrar que estão armados é que ele está funcionando corretamente. 8. Visualizações de dois de som,: na última lição, criamos com sucesso nosso contêiner de apartamentos, e agora vamos criar uma primeira versão inicial do ponto a p I n. Bem, não vai ser totalmente configurado como o profeta Profissional ou o de Produção . Mas eu quero apresentar caras para frascos visões prováveis e, em seguida, configurar um ponto final muito básico animais de estimação para que você possa começar a entender os conceitos em torno de pontos de vista do frasco puggle. Então vamos começar a levar isso para cima. Ok, então vamos dar uma olhada em visualizações plausíveis, e isso é novo da versão 0.7. Hum, e visões prováveis são inspiradas pela geração de visualizações do dango, que basicamente permite que você faça visualizações baseadas em classes em vez de torná-las funções. E ele é um exemplo básico. Você tem normalmente um show usuários e, hum, hum, e que os usuários vão ter ah, você sabe, você sabe, primeiro obter todos os objetos do banco de dados e, em seguida, renderizar o modelo passando os usuários dedo do pé que o plano modelo. Se você fizer isso como um plug de um modo de exibição, você, em vez disso, criar um show usuários vistas de classe. Você está suprimi-lo de vistas de apartamentos e eles têm esse conceito de despachar uma solicitação, e então você coloca os usuários lá e, em seguida, retornar o modelo de renderização. E então você faz isso. Você adiciona a regra Ural e, em seguida, tem a função de visualização v o método off que mostra os usuários ver . E isso é um pouco complicado para entender se você não usou, você sabe, visualizações prováveis ou vistas baseadas em classe no ângulo. Mas é essencialmente uma tentativa de obter mais abstrato ou desconectar os modelos do dos métodos reais ou coisas que você está tentando fazer. Então, por exemplo, você poderia fazer algo que é como uma exibição de lista, e é um método ou classe muito genérico . E então você teria algo como uma revisão de uso, que é uma subclasse de, pelo menos para você. E então você foi passado como essas duas coisas, e você imediatamente agora é capaz de, hum, mostrar qualquer coisa que é uma lista de coisas sem ter que repetir isso uma e outra vez . Hum, é ah, é algo que é ah, mais fácil de entender praticando com ele um pouco, mas eu não vou pedir para você fazer isso porque nós não vamos usar esta implementação específica do plano de abuso mas sim, vamos usar algo chamado o método baseado expedição, que é perfeito para descansar Philadelphia ap olhos e o aqui. O que vamos fazer é ter, hum, hum, uma aula para cada AP. Eu método que vai ter métodos diferentes, e você pode apenas encontrá-los por, obter post etcetera. E então você pode adicionar uma regra para esse ponto final do usuário para retornar a, hum , essa classe e Ah , e , você sabe, rotear inteligentemente se for novamente, se for suposto etc. Hum, mas nós vamos ver que bundas nós vamos junto neste primeiro exemplo de apostas. Então vamos começar a construir uma, uh, essa aposta básica, um, endpoint para que possamos tipo de, como começar a tirar os conceitos das visões prováveis e como podemos usar isso. Então eu vou fechar este top aqui, e eu vou criar uma nova, hum, nova pasta chamada Ah uh pet. E esse animal de estimação vai ser o ponto final do animal de estimação. E, claro, precisamos de um “eu” necessário. Por que lá? E vamos ter um fusível B Y, e vamos ter um P I p. Que é aquele em que vamos ter a classe real para a vista provável, e vamos preencher isso mais tarde. Mas a primeira coisa que queremos ter uma tela, um blueprint e adicionar isso às pessoas do aplicativo, eu Então vamos começar isso. Então aqui nós temos, um, uh, de, uh, uh, Pet Views importação pet up e, em seguida, registrar o projeto que registra abaixo imprimir pão. Certo, é outra luta que agora podemos começar a trabalhar no A P I P Y. Y. E o que isso vai ter é que vamos usar o abuso de metanfetaminas. Como eu disse a partir de, uh, frascos, vista de método de importação e de frasco importar seu filho. Se eu pedir e abortar, vamos precisar disso. Estas três coisas no nosso animal de estimação, um P.I. Então a primeira coisa que vamos fazer é criar um conjunto de animais de estimação. E, claro, isso é para que possamos verificar isso muito rapidamente. Mas a idéia aqui é que isso seria armazenado em um banco de dados, não em um em um array fictício ou estático. Tudo bem. Certo. Mas eu só quero sair assim, um, um, cima e para funcionar. Então eu tenho o meu, uh, em um grande três. Ah, objetos de estimação aqui. E estas são as minhas adoráveis apostas, Mac, Leo e Brownie. Ok, próxima coisa que vamos criar é um método para isso, hum para obter e você apenas colocar isso obter. E em troca, eles certificam o ah, este conjunto de apostas que nós éramos o financiamento aqui na classe, e nós deveríamos colocar um pouco de espaço lá dentro. Ok, então vamos guardar isso. E agora vamos, hum, ir para a vista deles, B y , e vamos permitir que esta vista acesse o plugue acima de você. Então, mas a primeira coisa que vamos criar o projeto para isso como nós definimos. Então, a partir disso um p eu importe que um p I, que é este. Bem, esqueci de colocar o copo aqui. Isso é certo. Então, eu tenho que eu tenho a classe aqui classe apostar um p I, e este é um método sub off view método. Agora. Assim vemos como temos vista de método aqui no topo. Então método view é que classe, hum, e nós estamos sub classificando no dia de pagamento p I e esse método tem um get, hum, get método um método post, um delete on, colocar assim como o create read Você atualiza e exclui métodos de um A P I e, um e aqui podemos, ah, ah, referenciar animais de estimação porque é uma classe. Então este é o eu que apostas que estavam definindo lá. Então agora estamos importando da paridade nossa terapia de importação, que é esta classe aqui. Perfeito. Então agora vamos continuar. Então nós temos, um aplicativo de estimação vai ser a planta fora, um, um, a aposta acima e depois o nome. E agora repare como vamos fazer isso como as prováveis visões que nós exemplos de verificar seu sabonete anterior. Adicionar regra. Desculpe. Na sua regra, e teremos animais de estimação e notaremos que estou terminando com uma barra. Então não estamos fazendo isso como você poderia esperar, e isso é muito importante. Isto é como um A P I, um Syntex, que significa que é tipo pensar sobre isso como uma pasta, certo? Quando você estiver digitando uma pasta, você coloca essa barra no final. E o que isso significa é que vamos criar uma coleção de objetos que estão dentro dessa pasta. Isso é tipo, um, o um, pensamento por trás disso. Mas lembre-se que para colocar ah ah barra no final, se você está indo para obter um conjunto de coisas do, um a partir de que um p i n ponto. Então vamos fazer função de vista igual a um p que eu peço para você e, em seguida, animais de estimação Perfeito. Então veja como é simples. Muito simples, muito elegante. Então temos o nosso plano. Temos o bebê que está sendo importado da nossa aposta e só por exemplo, ela comeu a planta. E então nós apenas adicionamos uma regra que diz, Se alguém atinge os animais de estimação, endpoint acabou de nos passar a função de visão do ah Perry p I. Classe e na classe vamos definir mensagens Gadd e todas as coisas. Mas, por enquanto, estamos apenas fazendo a parte de conseguir. Então vamos ver que, hum, nós tivemos que correr. Eu assumo isso, levante-se para que vocês possam acessá-lo, mas vamos, hum então se eu conseguir fazer isso de novo teorias. Oh, ok. Perfeito. Então, agora, se eu acertar o local do hospedeiro, uh, poços, eu tenho o resultado lá. E deixe-me colocar isso em um pouco menor para que você possa ver que ele está sendo devolvido de lado . Jason, liste os objetos. Tão perfeito. Isto é, isto está a funcionar perfeitamente bem. E agora vamos em frente e criar um método de postagem. Mas antes disso, vamos explorar algo, uma ferramenta que vai ser muito útil. Isso se chama Carteiro. Então, quero apresentar-vos isso. E é uma ferramenta indispensável para umtrabalhode desenvolvimento. é uma ferramenta indispensável para um de Então vamos verificar isso. 9. Como instalar e usar o poste: em nossa última lição, nós exemplo, criou a nossa primeira versão fora do A p I com um ponto final de aposta muito básico que nos permite fazer um pedido get e voltar uma lista de animais de estimação que configuramos como um Ray sauna dentro da classe. Mas agora queremos, hum, fazer coisas mais complexas, como postagens e, hum, talvez enviar alguns dados de carga útil dentro desses pedidos. E é um incômodo fazer isso usando o navegador ou até mesmo um terminal, um, tipo, terminal como linha de comando. Então, em vez disso, há uma ferramenta muito boa chamada carteiro que eu tenho usado por muitos anos agora que permite que você, hum, gerenciar e criar este pedido e obter de volta os resultados de uma forma muito agradável. Bem formatado. Então vamos verificar como instalar carteiros e como usá-lo. Ok, então vamos em frente e, uh, encontrar o, hum, hum, pós menta. A p I você pode fazer post destinado a Mac, e este foi inicialmente um, um plug in, e ainda está aplaudindo para o para cromo, Mas, em seguida, eles construíram uma espécie de como o nativo, um programa ah ou para você baixar. E há um para Mac Windows em cromo. Então eu vou usar o um para Mac, que é o computador que eu tenho e Ah, ele agora está baixando bem aqui. E então você apenas clicando lá e você deve tê-lo em seus downloads, e então você apenas arrastar e soltar em seus aplicativos. Agora tenho o carteiro lá dentro. Hum, e é isso. É bem fácil. Então agora eu vou, hum, hum, clicar duas vezes lá, clicar em abrir e aqui ter posto tripulado. Não, hum, se você quiser, , tipo, armazenar e sincronizar seu P eu gosto de endpoints ou solicitar. Você pode se inscrever e você pode usar global, que é, eu acho, o que eu fiz. Hum, ou você pode colocar seu e-mail usando e passaporte. E é uma coisa útil, porque se você está, digamos, testando isso em seu computador em casa e, uh e então você quer algo, você sabe, em outro computador no escritório, Talvez você possa, tipo, tipo, afundar a conta, e então você terá todas as suas coleções, hum, fora dos testes finais. Mas por enquanto, vamos pular isso e isso é como a tela principal vamos pular isso e isso é como a tela principalpara o aplicativo e a maneira como você testou com você. Inicialmente, você só faz um pedido aqui, então eu vou para ser, hum, hum, anfitrião local e depois animais de estimação, que é o que tínhamos no, hum aqui mesmo no navegador. E temos os resultados aqui. Certo? Então, se eu fizer isso e eles clicarem em enviar ver como eu consigo a versão formatada fora do Jason Hodges, que é muito bom. Quero dizer, eu gosto de ter essas coisas como formativas e outras coisas. Aqui está dizendo que você pode salvar seu pedido para que você possa gerenciá-lo. E era isso que eu estava te dizendo. Se você se registrar, poderá sincronizar essas coisas em computadores diferentes. Mas o que eu vou fazer é criar uma coleção, e espero que você tenha, hum, você terá a versão sincronizada disso e ah, eu vou fazer Eu não preciso disso. Isto é como um teste. Ele vai apagar isso, e eu vou criar uma nova coleção, e eu vou chamá-lo de apostas e você pode fazer isso para o seu tipo, você sabe, cada aplicação, cada aplicação, sua escrita e outras coisas. Então, dentro de uma coleção que você pode ter pedidos. E agora eu posso salvar isso requer porque eu sei que cada vez que eu uso, um eu queria obter pedidos. Farei isso com isso. Você está bem. Então eu vou guardar isso, e vai dizer em que coleção e eu vou dizer animais de estimação, P I E aqui você pode colocar uma descrição. Eu costumo colocar um nome como teatral como, hum,terminar o que isso está fazendo. Eu costumo colocar um nome como teatral como, hum, hum, Então eu vou dizer, uh, uh, obter animais de estimação endpoint ou algo assim. Hum, e então você está seguro e você tem seu uso descritivo descritivo, você sabe, informações lá. Então é isso que está dentro do animal de estimação. CBS. Então, se eu clicar em animais do FBI, ver como ele é chamado de colapso lá. Agora, o que eu também faço é que você pode criar subpastas. Então, se você tem, digamos que o FBI de animais, você pode criar uma pasta assim aqui e então eu farei qualquer coisa. Isso é o que está relacionado com as apostas dos dedos. Eu posso criar essa pasta lá e então eu posso arrastar. Há, tipo, você sabe, tipo um clique longo e arrastá-lo para os animais de estimação. E agora tenho a minha subpasta com o meu pedido. Por quê? Porque depois vou ter uma loja, sabes, sabes, e dizer que posso ter pontos finais mais velhos. Então eu tenho tudo tipo de como organizar bem a sua Então isso é que é basicamente carteiro em um olhar. É um software muito bom que usei, sabe, eu como eu disse, como eu disse, usei por anos quando ele começou como um plugue cromado, e agora que ele tem, é, ah, versão autônoma. É realmente útil. Então, com isso, o próximo passo seria criar um ponto final para animais de estimação e ver como fazemos isso. 10. Nosso primeiro POSting: Bem-vindo de volta, eso nesta lição, vamos ver como nos saímos. Um post real que, como você sabe, postagem A é equivalente a criar um novo registro. E como vimos na última lição, começamos ausar o carteiro como um método ou uma forma de ser capaz de interagir com o nosso Ap i de uma forma mais fácil. E como vimos na última lição, começamos a usar o carteiro como um método ou uma forma de ser capaz de interagir com o nosso Ap i de uma forma E ele vai realmente brilhar neste novo exemplo, que é configurar um objeto que vamos enviar para o ponto final do nosso animal de estimação ap. Então, vamos levá-lo para cima. Então, aqui estamos nós. São um p. Eu aposto um p I e nós vamos adicionar um novo método, que é o método post. Então o que vamos fazer é o seguinte. Vamos definir um post a mesma coisa que os próprios EUA, e então vamos verificar se não há, hum, carga útil do Jason no pedido. Ou se o nome do nome não está no pedido, Jason, então nós vamos retornar um, uh, um erro 400, que está em nós vamos dar uma olhada em alguns dos h dois porque, mas isso é tipo um , você sabe , como um herdeiro esperado. Então, se temos essas coisas, então nós vamos, hum, basicamente adicionar um i d toe o comprimento do estupro que é matriz e aumentando em um. E então teremos o nome que foi passado no post, Toby, Toby, o nome naquele objeto de estimação. E finalmente, vou upend o objeto para o array e retornar. Um, esse novo objeto, que é como um tipo de, um, uh, vamos dizer mecanismo ou ah, filosofia quando você cria um novo registro, é que você tipo de, esse novo objeto, que é como um tipo de, um, uh, vamos dizer mecanismo ou ah, filosofia quando você cria um novo registro, é que você tipo de, retrocesso para recusar o registro que você acabou de criar para que o cliente possa confirmar que você criou o registro certo e, hum e, e também nós vamos ter um nós você pode ver aqui um dois um um, que é uma outra vantagem para ser o código que significa que isso foi criado e, hum ou básico ou irmão. O pedido foi recebido, e eu estou indo para Ah, eu realmente criei um novo disco, então vamos levar os casacos HDB em uma cama, mas vamos começar com isso. Vou guardar isto. E eu tenho o Docker aqui rodando no meu computador. Então eu vou agora para o Postman, e nós vamos, hum, basicamente, criar um novo, hum, um novo pedido que vai se opor. Então aqui eu seleciono post. E como você pode ver, eu selecionei uma nova guia. Neste sinal de mais, vou criar. Vou pôr os animais aqui. Neste sinal de mais, Ah, e eu também esqueci. Reparei quando estava a verificar a gravação que isto não tinha espaço à direita. Então, como você pode ver, há um pequeno ponto vermelho lá dentro. Isso significa que isso não foi salvo aqui na coleção, então você pode fazer Ah, hum, hum, comentar S O R, uh, coisa que você pode fazer coleção. Oh, aqui, você é este cofre. Ou você poderia elogiar isso. Por isso vou guardar isto. E agora que esse ponto final tem sido a segurança aqui no índio, a coleção tão perfeita. Então, agora tem o posto. Mas como você sabe, Post não envia o pedido real ou os dados sobre o euro como o get nos solicitar . Então, na verdade, sou metade. Eu tenho um corpo aqui que é uma, um, tipo, uma conta que eu posso passar para o pedido. E aqui eu vou enviar um papel bruto, um, um, mais seleto aqui. Você pode selecionar dados de formulário. Hum, você pode selecionar Ah ah, para mural codificado. Você pode ter binário. Como, se você estiver carregando imagens, e aqui você pode selecionar o quê? Digite fora, hum, dados brutos. E eu vou selecionar Jason aqui. Agora. O que isso faz é agora você vê que Cabeçalhos tem uma nova opção lá. Se eu clicar lá, eu vejo que ele diz aplicativo tipo de conteúdo. O Jason. Então estamos enviando isso no cabeçalho. Então a escalada enviando isso com cabelo dizendo: “Ei, “Ei, Sr. A P, estou lhe enviando um pedido. Ter alguns dados no corpo sobre esse tipo de conteúdo é aplicação, Jason. Então é assim que você envia e diz ao FBI que tipo de conteúdo você está definindo, que faz parte da prisão. envia e diz ao FBI que tipo de conteúdo você está definindo, Cheio. A. P I, um constrangimentos , como vimos anteriormente, é que a escalada forma que tipo de informação fora está enviando, e também através dos verbos, o post aqui eles ficam. Também está comunicando o que você é, um, um, seu pedido ou o quê? Quais são suas intenções quando você está quando você está postando isso. Então, ah, aqui. Só preciso acrescentar algo assim. Eu só coloquei um suporte de ah e depois um nome de pé. E então eu vou colocar, hum, o nome do meu hamster Lalla. Então esse será o pedido. Então, quando eu enviar isso, ele vai para o, hum para o correio aqui, e ele vai ter o nome no pedido, Jason. E então eu vou ser capaz de adicionar isso para o objeto e, em seguida, anexar este reboque este, uh, matriz. Então vamos em frente e tentar isso. Vou me deixar salvar isso, e ele vai dizer onde eu vou salvá-lo. Hum, eu vou dizer que este é o ponto final dos animais de estimação, e então eu vou colocar esta eleição pits um p I na pasta de animais de estimação e seguro. Então agora eu tenho o post em seu segundo. Vês? Está bem, Perfeito. Então vamos experimentá-lo. Eu vou colocar alguma luz aqui e depois enviar perfeito, então vamos ter muita informação aqui que eu quero que você veja. Então, um, eu obtenho status para um criado. E como você pode ver, carteiro tem essa biblioteca muito bacana fora dos códigos HDP que diz que a solicitação foi atendida e resultou em um novo recurso sendo criado. Então criamos essencialmente um novo recurso. Ele também nos diz o quanto levou e o tamanho fora da resposta de volta, que foi 204 mordidas sobre isso. Você pode ver. Aqui está o que o servidor retorna. Você pode ver que eu D quatro agora é o I d para isso, Laleh. E, claro, faz sentido porque tivemos, hum, até o número três aqui. Além disso, resposta de volta com cabeçalhos, que incluem informações sobre o conteúdo, comprimento fora das informações retornadas. Também diz que vai devolver o aplicativo Jason Format. Ele tem uma data do pedido e também que tipo de servidor, que, neste caso, é um você sabe, uh, trabalhar soja por diversão. 34 Então isso é automaticamente colocado pelo frasco, e é realmente útil para os clientes. Mas, em qualquer caso, nós criamos com sucesso nós criamos com sucessoum novo registro aqui e claro, isso permanece na memória. um novo registro aqui e claro, Nós não estamos salvando isso em nenhum lugar em um banco de dados, mas em qualquer caso, ainda é uma boa idéia ou conceito fora. O que? Hum, os diferentes pontos de extremidade para isso um p eu vou começar a parecer 11. Código de status em HTTP: na última lição, demos uma olhada na criação de um novo registro usando o Post Request. E, claro, temos esse tipo de uma breve introdução à imagem para ser capturada, que era para um com, hum, hum, que corresponde a criar um novo objeto, hum, na imagem a ser chamado. Mas eu queria, como, como, brevemente rever alguns dos códigos de status http porque eu acho que é importante que você comece a se familiarizar com facilidade e realmente ter certeza de que você está retornando o ar correto nortistas os códigos de status corretos porque eles são muito específicos para as operações. E eu tenho Este é um recurso muito bom que eu vou colocar o link no curso, que vai sobre alguns dos, uh, uh, ou a maioria do status vai, mas também coloca um pouco tipo de estrela como os principais, e nós estamos vai passar por eles rapidamente. Então vamos começar com S 0 200 Então dois eixos x, é um dedo do pé para quatro, e qualquer código que comece com o número dois, o primeiro 1 é 200. Ok, quais olhos essencialmente um pedido foi bem sucedido. Esse é o que devolvemos no ah, aqui na busca. Embora não digamos especificamente lá, mas o frasco está devolvendo para nós. Mas talvez seja uma coisa boa, como, você sabe, você sabe, explicitamente chamar isso para fora. E como você pode ver, retornar no frasco permite que você coloque esta pequena vírgula e, em seguida, um datilógrafo Pergunte código antigo , que é realmente útil. Então vamos dizer que então vamos continuar olhando alguns dos códigos de status, e notei que quando eu clico aqui, eu tenho isso, como um pouco expandido, uh, Então vamos dizer que então vamos continuar olhando alguns dos códigos de status, e notei que quando eu clico aqui, eu tenho isso, como um pouco expandido, uh, e notei que quando eu clico aqui, eu tenho isso, eu tenho isso, como um pouco expandido, uh, seção e aqui excesso também, o que você deve ter na cabeça no poste e traço, que é , você sabe , diferente , diferente, tipo, uh, métodos ou h para ser, hum , tipo de solicitações fora que estavam fazendo, mas, hum, então 200 é ok para um significa que eles são exatamente como vimos antes é cumprido e resultou em um novo recurso sendo criado. Orecurso recém-criado pode ser referenciado pelos seus olhos. O Retornar na entidade da resposta com o mais Pacífico seu olho para o recurso dado por localização. Campo de cabeçalho. Nós não fizemos isso. Então, para onde acabamos de voltar? Como se lembra, acabamos de devolver o próprio recurso ou não devolvemos isto. E isso é uma coisa boa para começar a pensar, que é lá que o ódio deve tipo fora como, abordagem para as coisas. Certo. Então vamos consertar isso em um na próxima lição. O próximo é dois ou quatro. Sem conteúdo. E isso geralmente significa que, hum, o pedido Waas foi recebido e ele foi corretamente, hum, processo. Mas não preciso devolver nenhum dado porque você não modificou o recurso. E acho que usamos isso quando fazemos a elite. Isso é certo. Então, na liderança, porque você está construindo o registro, você não precisa necessariamente retornar o registro antigo porque ele já foi excluído. Eso você? Normalmente você não quer devolver os 200. Ok, porque, hum, é tipo, ok, eu tenho o responsável. Você não está me contando nada sobre isso. É como eu tenho que responder assim para um quatro foi criado para isso. É como se eu estivesse dando a você uma confirmação de que recebi o pedido e fiz algo , mas eu não vou te mandar de volta, um, qualquer objeto ou qualquer data então para uma peça de quatro. Perfeito para isso. Então agora entramos nos 400. Normalmente, não. Estes são ar. Então 400 pedidos ruins. Isso significa que os pedidos Ismael Foreign, significa que você deveria estar enviando algo ou você não está enviando isso de volta. Temos aquele aqui no poste. Se houver se a pessoa ou o cliente não está enviando a solicitação Jason ou não está enviando um campo chamado nome na solicitação, estamos enviando um 400 que é a maneira correta de reembolsar para isso. Hum, então 400 significa que você enviou, hum, você sabe, a informação sobre nós temos algumas algumas informações, alguém ou algum pedido de obter. Mas você precisava fazer outra coisa. Qualquer um. Inclua novos campos ali. Você sabe o nome do campo. Não está correto, esse tipo de coisa, coisa, para alguém vai ver quando tivermos autorização. O que significa que é tipo um log in, certo? Nós vamos implementar um log de aplicativo em eso que Onley registrar aplicativos pode dirigir com nosso FBI para um um significa que você não está enviando as credenciais apropriadas. Então eu não sou tipo, uh, uh, você sabe, eu não vou ser capaz de cumprir seu pedido, hum, hum, semelhante quatro ou três, mesmo que a diferença que você sabe pouco, tipo de diferente, mas está relacionado para três é retornado quando você passar o login correto e senha, mas você não está especificamente autorizado a fazer isso. Ação desativada pode estar criando um novo pad. Então, por exemplo, digamos que você tem um tipo de usuário que pode obter todos os animais de estimação do seu servidor, certo? Mas você tem outro tipo de como autor ou nome de usuário administrador e passaporte que permite que você realmente crie. Então, hum, isso seria retornado, por exemplo, para o primeiro usuário que ele é apenas amado e senha está correta. Ele tentou gostar de postar e criar um novo objeto, e nós retornamos que para três 44 significa que eu não encontrei o recurso, e isso pode ser tipo de como se você pode soletrar o você sabe, a garota em. Normalmente, esse é o caso. Você está mal soletrado? Eu encontrei um objeto ou recurso específico. Então, você sabe, por quatro você parecia ter quatro no passado, quando você meio que, tipo, tipo, ir a um site e você perdeu digitação errada o nome da página ou o tom foi movido para algum lugar outra coisa e não devolvi um código 300, hum, para nove é conflito em. Isso significa que talvez você esteja tentando inserir um novo animal de estimação que tenha o mesmo nome fora em estimação existente para que você possa devolver um para nove, o que significa , hum, que o, hum,que o usuário está enviando informações que serão você sabe, conflitante. E finalmente, os cinco, os 500 Siri. Eles querem saber que você vai usar a maior facilidade. Cinco servidor interno de financiamento, que é retornar quando algo tipo de ruim aconteceu no lado do servidor. Isso seria como, você sabe, que ibex caiu ou o, um servidor de aplicativos, uh, uh, está gerando um espelho que não está sendo pego em uma tentativa exceto código. É como, você sabe, vomitando, você sabe, você sabe, então o frasco geralmente retorna isso de volta automaticamente e e o cliente é informado que há um telefone para, 500 AH, que é, você sabe, basicamente, há um problema com o servidor, não com seus pedidos ou a maneira como você está fazendo as coisas, mas algo do nosso lado. Assim disseram os principais, você sabe, é bom apenas dar uma olhada em alguns desses outros e se familiarizar com eles. E nós vamos usar ah, monte fora disso em todo o curso. Então vamos em frente. Tipo de como começar a adicionar alguns fez um dado ao nosso para os nossos animais de estimação objetos eso que nós somos, hum, mais tipo de, hey, hey, faz complacente. 12. Um CRUD de real: Então, na última lição, nós verificamos os códigos de status http que é útil para o cliente para obter informações sobre o que aconteceu com a solicitação que deveria rebocar o servidor A P. I. Mas agora o que eu quero fazer é trabalhar um pouco mais em que animais de estimação endpoint e ah, fazendo mais ódio, deve conformidade, ter alguns feito um mais tarde lá, bem como permitir a obtenção de um animal de estimação específico através de seu I d. Em também implementar o put e os métodos de chumbo. Então vamos começar a fazer isso. Então vamos começar indo para o animal de estimação de uso B y. E eu quero, hum, fazer isso mais, eu acho, Ah, um pouco mais escalável. E o quê? Eu vou apenas ir. Vou substituir a vista Toby um, um viável para que eu possa então fazer métodos diferentes para ele. Então o único quando eu faço isso é que eu vou fazer uma vista animal, que vai ser igual ao pet ap eu peço de você auf pet, um p eu então me anunciar para agora inserir essa linha também, para os diferentes métodos. Então o primeiro que eu vou fazer é eu vou para a obtenção Mas este é o ganho para todos os animais de estimação. Então eu vou fazer este animal de estimação em nossos animais de estimação euro. E quando eu morrer, você pode fazer o padrão pago porque lembre-se que nós vamos rebocar um indivíduo, chegar mais tarde, hum e este seria para todas as camas. E aqui pode fazer animal de estimação nos ver a função de visualização, e então os métodos que serão para estes para específico sua regra vai ser obter. Então esta resposta vai ser quando passarmos as apostas. E não há mais nada lá, então isso é pegar animais de estimação mais velhos. Mas desde que a função sobre o sobre o método que eu vou criar aqui em um p I para o get vai ser nenhuma divisão para, hum um um. Vai ser se você passar, eu e os outros. Se você não passar o I D , e então eu vou colocar este padrão, Toby pet, eu seria igual a nenhum. Então, o próximo vai fazer é o post, e vai ser semelhante na sua regra e, em seguida, tapinhas. Mas aqui, eu vou apenas colocar o método Toby post aqui nós não temos, você sabe, rotas diferentes. É como aquela rota, porque você é sempre suposto para o para os animais de estimação e ponto. E finalmente, eu vou fazer o método para o, hum para o indivíduo get que eu coloquei e deletar porque todos eles exigem um i. D. Toby passou. Então eu vou dizer que o Pat não é entrevistador pago eles vão ser funcionalmente gastos vista, e então eu vou ter os métodos ser colocados e elite perfeita. Então agora você vê como nós temos, você sabe, os diferentes casos de uso que o 1º 1 seria quando eu receber todos os animais de estimação, e neste caso, eu tenho que passar. Má idéia não foi porque eu vou estar esperando isso no nível de um p I. E então eu vou ter o, hum, aquele para o post, que é criar qualquer um que não tenha nenhum nos casos de uso. E então, finalmente, quando eu passar animais de estimação com um animal de estimação entrevistador eu d. Isso pode se aplicar para ser colocado na tampa. Então, nenhum aviso que nós não estamos fazendo lá eles mesmo assim, tipo de como os casos de troca na entrevista em si, o que é uma coisa legal que pontos de vista aplicáveis nos leva que será decidido aqui. Quando? Quando chamarmos o Perry P. I. vai nos enviar de forma inteligente o método adequado, dependendo se pegarmos o barco ou apagarmos. Ok, então a próxima coisa que eu vou fazer é ir para o A P I e eu vou inserir , hum aqui. Ah, um pouco de ódio deve. Então eu vou ter o lince, uma seção de lince que vai dizer, qual é o euro para chegar a esse recurso? Então eu vou apenas copiar e colar isso e ele diz links e é uma matriz, então você pode ter vários links no objeto. Mas o que estava definindo é “eu “, e esse tema de “Rehl Eyes”. É uma espécie de uso fora da HDB, hum, hum, impostos acing onde isso está dizendo, qual é o parente, o parente tipo fora como o quê? Qual é a relação fora deste link e você pode usar ferroviário auto ou você pode usar ferroviário igual, Eu acredito sublinhado novo Se queremos abrir em uma nova janela. Mas, em qualquer caso, isso está se referindo a si mesmo. E está dizendo que para chegar a esse recurso, você precisa ir a essa área treff, que é animais de estimação. Ah, corte um. Alguém é a mesma coisa aqui, mas neste caso vai ser apostas cortar para. E como você pode ver, isso combina com a idéia, certo? Então, se você acertar as apostas, então ele vai pegar Leo. Se você acertar, é um que você vai conseguir, Mac. E, finalmente, aposta três. Então vamos pegar Ah, vamos começar a trabalhar no “get hum “, que foi uma piada de mau gosto. Então nós vamos ter um animal de estimação i d agora, como eu mencionei e lembre-se o que fizemos aqui, que é como, se o se os animais de estimação funcionar fora obter não i d depois disso, então nós ainda estamos passando. Pago que eu sabia para que isso não invadisse aqui. Veja, isso era necessário. Este é um parâmetro obrigatório na única função. Então vamos dizer Eve, hum, se eu der e isso é como se você quiser pegar o, hum, o animal de estimação específico, então você vai fazer o seguinte. Então nós temos a matriz de animais de estimação e então nós estamos obstruindo um, porque lembre-se que nossa raça ou pelo menos começar em zero. Então, só estou dizendo, me dê o par que eu d que está sendo passado lá. E então ameaça um para que o i d para, hum, para Mac, que é um corresponderia ao elemento zero, e então para Leah seria o único elemento e assim por diante. E depois, , podemos livrar-nos disto, e depois não nos livramos mais. Então dizemos para voltar. Oops. Então isso é para quando eu quiser pegar todos os tapinhas de estimação. E então eu apenas passei o, hum todo o raio A lá dentro. Ok, então isso é para obter a função. E a outra coisa que queremos modificar aqui é através dos links. Então vamos ter a mesma coisa aqui, então eu vou ter links. Mas eu tinha a coisa errada, copiado e colado. Ele também liga, e então vai ser relativa auto h era uma jangada animais de estimação, mais a corda fora do comprimento fora que animais de estimação. Ah, Ray. Um, mais um. Então vamos ele ter a força fora do comprimento fora de auto animais mais um Então este é o comprimento mais um aqui, e essa é a corda dele. Ah, por quê? Porque eu estou criando um novo disco e será essencialmente um mais o, hum, hum, o número fora dos elementos lá dentro. Perfeito. Acho que é isso para as coisas que queríamos fazer. Vamos colocar a tampa na próxima lição, mas vamos começar a testar isso. 13. : Então vamos tentar o ah, obter pedidos primeiro, hum, e ver se temos os mesmos resultados. Então temos que chegar ao ponto final aqui. o TenhooDr. Running, e acho que tenho o “Yeah “, esta coisa está a correr muito bem. Então vamos fazer nós estamos chegando aqui e perfeito. Então aqui eu vejo o, hum o diferente. Ah, deixe-me ver se eu posso. Não, é para copiar. Hum, eu queria, tipo, expandir isso. Oh, lá vai você. Um pouco. Ok. Então eu vejo seus cuspes. Você sabe, eu d links HF animais de estimação. Um verdadeiro eu. O nome é a mesma coisa com animais de estimação, etc. Então isso funcionou. Realmente bem, eu não estou passando um i d. Eles estão então isso significa que a eu não estou passando um i d. Eles estão então isso significa que afunção está entrando nesse caso porque não há nenhum caminho. E, claro, esta cama eu d. disse ser dito a ninguém porque isso está configurando para conhecido no pedido get. Hum, porque eu não tenho nada depois disso. Hum, onde nós quando eu faço o indivíduo. um Tenhoumanimal de estimação depois. Hum, e eu realmente acho que se clicarmos nisso. Você vê como é clicável. Eu acho que vai funcionar, e vai criar uma nova guia. Mas vamos ver se isso acontece. Certo, Certo, perfeito. Então ele cria um novo uma nova guia. Eles não enviaram para nós, mas está dizendo para pegar um animal de estimação local. Então, se eu pudesse enviar o seu grande então eu tenho neste caso, você sabe, Max gravado por si só, ele diz que é um i d e os links nós mesmos e, uh, e o nome. Então, se eu mudar isso para, eu vou chamar Leo. Se eu mudar isso para três, eu fico com Brown. Isso é incrível. Então vamos, hum vamos salvar isso no eu acho. Vamos renomear isso. Obter todos os animais de estimação. Ponto de mira. E então eu vou salvar esse Toby, pegar um animal de estimação, e eu vou colocá-lo na coleção Mets. Incrível. Então, um, vamos tentar um post e ver se conseguimos, hum, os resultados corretos, hum, corretos. Então nós temos aqui, uh, ver animal chamado Lalla. Desde que eu acho que nós começamos, o servidor é que nós não temos La LA lá. Sim, só temos até brownie. Então vamos enviar isso e ver o que acontece e perfeito. Temos apostas para a qual é Lalla. E agora, se eu tentar aqui e pegar quatro, eu levo Lalla lá com seus animais de estimação. Treff incrível. Então veja se diz que não o salvamos. Não queremos salvá-lo porque só queremos dizer que é um. Então vamos deixar assim. A próxima coisa que vamos fazer é trabalhar nos métodos de colocar e excluir. Ok, agora vamos trabalhar na operação de atualização, que é o método put X para ser. Mas eu queria te dar um conselho aqui, porque colocar também pode ser tratado para atualizar ou criar um registro. E o site de criação vem se você estiver. Se você der recusou a opção de, hum, enviar em objeto com sua própria identidade identidade Então, por exemplo, vamos dizer que eu, em vez de nossa criação da idéia da aposta Eu expus um, uh, coloquei um método onde se você passou o i d, em seguida, o que Paris criou com a idéia de que recusou passa Hum, eu não acho esse caso de uso muitas vezes. Então o que eu costumo fazer pessoalmente é usar o método put como a atualização, e isso vai ser tipo de como eu usá-lo no resto do curso. Mas, ah, a ressalva é que você pode usar colocar também sob as especificações HDP, como um post. Mas, mas em um post onde você permite que o cliente crie um registro com um I D que recusou bunda elege, Hum, e tecnicamente, se queremos atualizar apenas um campo fora do registro, muitas vezes objeto . Em seguida, você usa outra saída para ser patch frio método. O problema com patches que muito fora, Digamos que você sabe onde Klein JavaScript, e ainda mais sobre clientes não suportam costas. Muito bem assim, mas novamente, Patch significa que você enviar essa idéia e, em seguida, apenas uma sensação de ser atualizado versus colocar. Você precisa enviar a idéia e todos os campos. Você não pode simplesmente enviar um campo para o objeto que eu gosto, eu disse. Pessoalmente, eu usei nos colocar teste patch, que significa que você pode passar o I D e apenas um campo ou todos os campos. Mas isso é uma coisa que eu compro o sinal que escolhemos fazer e eu comunico isso para o A P I e usuário. Então, sim. Então vocês já sabem, esta é uma advertência em mente e certifique-se de ler sobre patch e colocar no recurso que eu vou colocar na lição. Ok, então vamos trabalhar agora no pedido de venda aqui. E então vamos fazer o seguinte. Nós vamos encontrar o método com o animal de estimação i d. como um parâmetro. E então vamos verificar se o pedido tem um objeto Jason. Ou se não tem um nome no pedido, então vamos abordo com um erro 400, que é, você sabe,pedidos ruins. Ou se não tem um nome no pedido, então vamos a bordo com um erro 400, que é, que é, você sabe, Em seguida, eu vou reduzir a contagem fora do array em um. E eu quero dizer que o nome do animal de estimação é igual ao nome do Jason pedido. E eu vou retornar o objeto de volta para o usuário. , Vou devolver 200,o que significa que a operação foi bem sucedida e estou devolvendo o objeto, mas porque não é nenhum objeto. Eu não estou retornando uma turnê, mas sim um A 200 e ah, só para entendermos o que está acontecendo aqui. O eu estou submetendo um dedo do pé a cama que eu d. que está sendo passado porque de novo Ah, raça. Tenha um índice zero para o 1º 1 Então, se você está passando, digamos um pedido para atualizar Leo. Você está passando um número dois, mas na verdade eu quero tirar o ah, o elemento animal de estimação de um. Então este é o seu sírio, certo? Então, hum, é isso. Essa é a vista. Vamos em frente e fazer a exclusão. Então você encontra o método da elite. E lembre-se disso, o chumbo é o método ser realmente. Não é uma função que estamos eternamente chamando essa liderança. E aqui eu vou chamar a palavra del Key para uma corrida, que é o líder do um elemento específico ah, fora da Thea da matriz. E finalmente eu devolvi um objeto Jason vazio com ele com um dois ou quatro e lembre-se o que dissemos sobre dois um quatro. Isso significava que a operação passou, mas que eu não estou devolvendo nenhum objeto para o cliente. Mas estou fazendo um fórum confirmando que a elite passou por tudo bem, então vamos tentar isso no cliente carteiro. Então vamos verificar rapidamente qual é o melhor que temos. Então temos Mac Leo Brownie. Então eu vou clonar este dedo do pé, um, para ser um, hum, o posto porque nós vamos ter que passar este corpo aqui com um nome atualizado . Então, há uma função aqui se você perdoar oito em público. E vamos renomear isso para ser colocado. Ah, até eles aposta específica. E então precisamos passar um i d. aqui. Então eu vou, hum eu perdi o topo aqui, e nós salvamos isso, ou este é porto Salvar e deixe-me criar um novo top aqui. Vamos colocar a colocar lá dentro iria obter. Então vamos pegar todos os animais de estimação de novo. Tenho o Mark, Leo e o Brownie. Vou mudar o nome de Brownie para Lalla. Então, são os animais de estimação três para passar os melhores três. E eu coloquei Lalla lá. Quando eu fizer isso,a Operação Brown será renomeada Lalla, então vamos mandar isso. Quando eu fizer isso, Operação Brown será renomeada Lalla, E agora pegue os animais de estimação três seu nome Lalla, e observe que eu tenho 200. O que, que, hum, é basicamente aceitar que o pedido foi processado com sucesso e ele retorna volta, hum, hum, e se pegarmos todos os objetos aqui, Vamos ver, sim, vamos conseguir muita coisa lá fora. Ok? Então vamos fazer um novo. E eu vou fazer a elite, e eu vou clonar o get para isso. Então vamos ligar para essa elite, e eu vou apagar o terceiro disco, que é Layla e deixe-me atualizar isso. Toby, o líder. Um animal de estimação, eles economizam. Certo. Perfeito. Agora vou apagar o número três, que é lava. Deixe-me enviar e perfeito. Eu recebo um dois ou quatro, que significa que o processo do servidor, o pedido, mas não há conteúdo retornado de volta. E se eu fizer isso, eu chego aqui. Vejo que são agora só tem Mac e ver 14. Autenticações simples: Então, vimos todos os criar grandes operações de atualização e exclusão. As operações de multidão para são muito simples na memória, tipo off pet, A p I e ponto. Mas agora nós queremos, você sabe, levar um pouco para cima. E quando você está lidando com olhos P, você está sempre lidando com autenticação e autorização porque segurança é uma coisa importante que você deveria pensar normalmente, o que eu recomendaria, hum, para fazer se é se é se você quiser ir, como todo o caminho é estudar como ativar o off. Então, escritório, este protocolo que muito do, você sabe, muito profissional ap que eu uso é como o Twitter. Hum e, uh, é um pouco complicado de configurar, e eu poderia fazer ah, muitos cursos ou YouTube sérios sobre configurar um python baseado fora do servidor. Mas o que eu fiz em projetos no passado, tanto para mim quanto para aplicativos profissionais, é uma autenticação baseada em token, que é muito semelhante. Mas não está 100% de desconto. Então, Então, vamos ver como podemos fazer isso. É como se eu quisesse desenhar até que vocês pudessem conferir. Hum, então o que nós vamos fazer aqui é nós vamos ter um, hum nós vamos usar os cabeçalhos. Então, em oito na saída E p. Você basicamente, você sabe, camadas fora de informação. Então nós temos, você sabe, o realmente seu olho onde você pode passar informações. Por exemplo. Esqueça os pedidos. Você tem o corpo, que é o que vimos quando estávamos fazendo o post ecolocamos informações, que são como dados. Você tem o corpo, que é o que vimos quando estávamos fazendo o post e que é o que vimos quando estávamos fazendo o post ecolocamos informações, que são como dados. colocamos informações, Isso é parte do pedido, mas também temos cabeçalhos. , parte do pedido, E nós vimos os cabeçalhos quando estávamos falando sobre, um, você sabe, o aplicativo Jason. Jason fez com que ela se lembrasse disso. Portanto, é muito comum que você use os cabeçalhos também para, como, autenticação. E o que normalmente fazemos é usar essa coisa chamada no cabeçalho X traço. Então, X esconderijo significa que você vai dizer, você sabe, x up. Eu d, por exemplo, para o aplicativo I d ou em e ex como Ah, é um token. E isso é tipo como uma senha tipo de coisa, onde você tem, tipo, tipo, informações para ser capaz de acessar seu, hum, seu ah, seu conteúdo A P I e você quebrou cabeçalhos em cada solicitação. A forma como funciona e é semelhante a ter um nome de usuário e senha, tipo de login. A forma como funciona e é semelhante a ter um nome de usuário e senha, É... é basicamente o seguinte. Você tem um, hum você não tem um aplicativo que tem re ler pedidos de escrita ou acesso ao seu A P I e esse aplicativo vai ter um aplicativo i d. e vai ter um segredo de aplicativo e pense nisso como o nome de usuário e senha, Certo. Então isso vai funcionar. Usam o nome dela e a senha. Agora, a coisa é, você não quer passar todos os pedidos, seu uso apontando passaporte, porque é como, hum, você sabe, se por acaso alguém chegar Esses cabeçalhos, você vai ser exposto. Então você quer se separar, eles os usam no passaporte dos cabeçalhos reais que você está passando. Então, a maneira como funciona é que, hum, para o passo número um, você atingiu algum tipo de ponto final. Isso é como obter token, obter no token de pontuação, e depois isso. Começa a falar. Você trabalha, você vai ter, um, hum, hum você vai passar no post. Do pedido do correio, você passou o segredo e o segredo. Do pedido do correio, Agora, esta informação que você está enviando no post sobre o corpo da besta de dados não pode ser lida por ela. Tchau tchau. Servidores que são servidores intermediários. Então essa é uma operação muito segura, tipo, certo? E depois de postar, então você volta do servidor. Uma lembrança. E este token é um tipo aleatório de como uma combinação de letras e números, e vamos ver como geramos um desses. Mas também tem uma expiração fora, digamos X horas ou um dia. Hum, por quê? Porque o que você quer fazer é que, por causa deste símbolo, você vai passar os cabeçalhos. Talvez alguém possa ler que no dia terá acesso temporário para fazer coisas com o P.I. Mas se você sabe que o cliente detecta de alguma forma que alguém está lendo essa informação ou, você sabe, informa Você, hum então eles podem revogar este símbolo e então você sabe, você é o seu velho, você é bom. Você é o cliente ou este hacker não tem o seu trabalho em segredo. Eles só têm o up I d e o token E esse token é, você sabe, gerado com frequência. Então, depois que você tem este token passo número dois está em cada pedido. Então, digamos que você deseja obter o endpoint de animais de estimação. Você vai passar os únicos cabeçalhos que você vai passar o F I T e o token, e então em cada pedido, você vai passar pelo pedido e dizer, isso é idéia e token, você sabe registrado em algum lugar e é isso que vamos fazer. Nós vamos, você sabe, armazenar isso na palestra vai ser armazenado no banco de dados. Tem um prazo de validade. Então, depois de um certo período de tempo, esse token não é mais válido. Então a primeira coisa que vamos fazer é criar um decorador para cada solicitação para que possamos verificar se você sabe, as solicitações que estamos recebendo é válido e que o usuário tem acesso a, você sabe, atingindo os pontos finais. Então vamos começar a trabalhar nisso 15. Testando nossa autenticação simples: Ok, então comece a trabalhar no decorador e no que vamos fazer, Ace, criar, hum, uma pasta de aplicativos adicionar onde teremos os modelos e as visualizações do teste para a criação do aplicativo . E, hum, , testando os diferentes clientes ou o, você sabe, o login do usuário e a senha, por assim dizer. Eles vão estar acessando nosso PI , então vamos fazer essa pasta aqui, um, aplicativo. E então nós queremos criar um ser um B y para que python saiba que este é um módulo A e nós vamos criar um B Y de um decorador Não sob a maior velocidade por quê? Vamos fazer algo que você já viu no passado, que é um decorador. Então começamos com as ferramentas funcionais e wraps de importação. Então nós vamos importar o pedido e J filho, se eu do frasco e que vamos definir este decorador chamado aplicativo necessário. Então, criamos a função decorada regular com os argumentos e argumentos de palavra-chave. E então a primeira coisa que vamos verificar é até mesmo solicitar cabeçalhos, e vamos chamar este cabeçalho um X up I tipo de como o que eu mencionei anteriormente. E se não for, então vamos devolver um código Nair 403 que não é autorizado. Então vamos configurar isto viável. Toby, o que X para cima i d cabeçalho. E também vamos conseguir o segredo do aplicativo, que será chamado de segredo do aplicativo X. Eu só vou imprimi-lo na fechadura eso que vemos que este é estoque estão funcionando atualmente. E para este primeiro teste, o que eu vou testar é que tanto o up d, hum o f i d disse toe Jorge ea seqüência AB é dito para o meu segredo. E então, se não for o caso, então também vamos retornar uma mensagem aérea. Caso contrário, retornamos a função, o que significa que a função continuará trabalhando a partir desse ponto em diante. Perfeito. Então note que eu estou fazendo aqui o segredo up i d e up sendo passado nos cabeçalhos. Claro, vamos modificar isto com um símbolo. Esta é a maneira errada de o fazer. Mas quero que os rapazes vejam como isso funciona. Ok, então agora nós vamos para o animal de estimação, um, um arquivo P i e nós vamos adicionar o decorador aqui. Então vamos dizer da AP. Ah, decoradores importam necessário. Está bem. E, hum, este é um tipo especial de, como método que prováveis vistas oferece, que é apenas são capazes de passar decoradores, eu digo uma lista de set. Então, vamos dizer decoradores iguala-se necessário, e é uma coisa muito agradável, muito ver que aquele frasco implementa para nós. Então não temos que usar o sinal de “at “aqui porque não funcionaria certo? É uma classe não é uma função, então frasco. Se o fato nos dá esse método de ajuda , que podemos, podemos passar os decoradores como decoradores. Neste caso, vamos usar apenas um. Então vamos ver o que acontece quando tentamos solicitar agora os animais de estimação mais velhos. Então deixe-me limpar isso e, em seguida, apenas colocar o get l ah, obter velhos animais de estimação e apontar. Agora, se eu enviar isso, vou pegar um quatro ou três, o que significa que está funcionando corretamente. E se eu ver os registros, eu posso ver um, eu acho que ele não imprimiu isso lá porque ele ah ver o que ele está fazendo. Então, se é se é ah por estes nenhum, então ele está devolvendo isso para três. Então não vamos imprimir a ideia em segredo. Então isso está funcionando bem. Mas agora vamos dizer que esses cabeçalhos. Não estou aqui, então veja como temos a chave e o valor. Então aqui, nós vamos dizer, X up I d IHS Ah, nós dissemos Jorge, certo? Então, Jorge, é igual ao nome de usuário. E vamos mandar isso. Não vamos enviar o segredo para ver o que acontece agora. Se eu enviar isto, ainda recebo um 43 e recebo a fechadura. Diga alguma coisa. Perfeito. Então veja como ele está imprimindo o cabeçalho aqui, o jorge encorpado dizendo conhecido por seu para o segredo aplicativo. Então vamos fazer isso de novo. E desta vez é também. As senhas erradas iam dizer senha. 123 de novo. Mande-o. Eu recebo um proibido então Agora eu vejo o que está acontecendo lá, mas ainda não é a combinação certa. Então, finalmente, se definirmos a combinação certa, que é meu segredo, e depois enviarmos, eu recebo 200 ok, hum e eu perdoo o corpo. Vejo que os animais de estimação estão sendo mandados de volta para mim. Hum, perfeito. Então é assimque assim funciona a autenticação básica. E, , sabe, esta é uma boa primeira introdução de como vamos configurar a autenticação de autoridade A P i ah em nosso aplicativo de animais de estimação. 16. Modelo de API e de endpoints da API e da: nesta nova seção, vamos começar a construir o aplicativo baseado em token de rial. E então vamos começar a trabalhar nisso usando TV moderna para armazenar esses APS nas credenciais e também armazenar tokens que, como você disse não, a partir da explicação anterior tem uma exploração, hum, sobre esses tokens. Então vamos começar a trabalhar nisso. Ok, vamos começar trabalhando nos modelos para o aplicativo, hum, ou os altos que serão capazes de, hum, registrar ou ou acessar os endpoints. É onde eu vou criar um modelo B y e em que modelos pessoas, eu vamos configurar o seguinte primeiro, nós não vamos importar a taxa do aplicativo, então nós vamos criar um modelo para o APS, e esse modelo é Vou dormir um cochilo. O que vai ser como se usassem o nome dela. E então nós também vamos ter um segredo, que vai ser uma espécie de senha. E nós vamos indexar ás pelo up i d. Há um modelo que vamos criar ou a outra coleção vai ser a coleção Axis , que é onde nós armazenamos os tokens, então ele vai ter um cochilo, que vai ser uma chave estrangeira ou campo de referência como nós chamá-los no caminho, nós vamos ter um token que vai ser apenas uma corda e finalmente estava em uma loja. A expiração para esses tokens. Perfeito. OK, não, vamos trabalhar no “A P I” para o aplicativo. E então nós vamos dizer que este é o P eu me esquivei b y e o que vamos fazer aqui, nós vamos ter as duas aulas. Quer interagir com a criação de cima e outra para a criação de Tolkien, que vai ser o acesso A B I. E tudo bem se você colocar mais de uma classe AP I em um único arquivo, então vamos começar a trabalhar nisso. Então nós vamos ter, hum, a vista de método de vistas de apartamentos importados. Então vamos precisar de umpedido um a bordo e do Jason. Se eu for do frasco, vamos usar a biblioteca da cripta B, e também vamos ter o ano em que eu d duas grandes fichas. E, finalmente, o dia e hora Delta para verificar a validação de token. Então vamos importar o modelo da AP. Hum, tanto para cima como para o eixo. Então estes são de primeira classe. e E vamos nos sentarefuncionar, o que vai dizer que se o pedido não tiver nenhum Jason, vamos a bordo que tira o taco. Se o pedido tem Jason nele e se não tiver, então não devemos continuar com a instância de classe, aviação, então não estamos definindo um método post, e a primeira coisa que vamos verificar se temos até d ou em segredo no próprio pedido . Agora reparem que não estamos a passar isto nos cabeçalhos. Estamos passando por um suposto corpo porque agora estamos fazendo o caminho certo e algo que você verá aqui. um Vou começar a usarumcódigo de erro. E esses casacos da época são geralmente eu os faço cordas de palavras maiúsculas com neste curso no meio, modo que é uma espécie de constante e o cliente tende a verificar esses erros. Então, se não tivermos um segredo, então vamos devolver um erro. Então vamos verificar se o APP já existe. Então nós vamos bater o mongo para ser para obter objetos que têm o mesmo up i d Se o up existe, então nós vamos voltar no ar dizendo que o up eu d já existe eu notei, estavam usando Cold Air 400. Agora temos o nosso mais, então estamos prontos para ir. Vamos criar as credenciais. E uma coisa que eu vou fazer aqui, eu não vou guardar o avião do passaporte porque isso é como um passaporte normal. Eu vou ser descriptografado para que se alguém maliciosamente hackear o banco de dados, eles não tenham acesso às senhas reais. E eles devem ser sempre sua prática quando você está trabalhando com senhas, mesmo que suas senhas de aplicativo em ah, em um servidor p I. E agora, finalmente, nós criamos o objeto aplicativo com o até eu d e nossa senha hash, e então finalmente retornará um resultado ok, volta para o cliente e notar que eu não estou retornando nada aqui. Só estou dizendo resultado. Ok, então isso vai ser um 200 agora. A próxima coisa em que eu trabalho é o lado simbólico das coisas. Então vamos começar a trabalhar nisso vai ser chamado de acesso A P I e onde fazer a mesma coisa. Nós não entramos nele. Que cheques? Se o pedido Jason está vazio, em seguida, iria retornar um 400. Agora, vamos definir um método post. Agora, o Post aqui vai ser para criar um token. Então vamos verificar se não há nenhum segredo no corpo. E E agora vou receber de mensagemde erro para o cliente. Em seguida, vou verificar se o APP existe. - E então isso significa que eu encontrei o aplicativo que eu d. Primeiro, eu vou apenas retornar o erro lá quatro ou três. E aqui eu vou gerar o token. Se Thea, se a senha estiver correta, estiver correta, então vamos checar com a biblioteca B Crypt e pegar que isso é igual ao nosso banco de dados sobre o segredo que retornaria do banco de dados. Então, se é se ele passa, então nós existimos com o pouco Os tokens existentes faz com que aquele que vamos dizer que é o novo válido para este aplicativo. Então eu vou apenas obter todos os tokens de acesso que correspondem a este aplicativo e os termos labiais. Da próxima vez que eu gerar um token usando a biblioteca U.D. , eu vou definir a hora dos tokens, Toby. Agora, e como podemos dizer, vamos usar o “tu “para ver. E quando eu disse que segundos e microssegundos Toby Zero estava interessado em horas e minutos. E vamos definir o prazo de validade. Toby, a 30 dias. Finalmente, eu armazenar estes único banco de dados em si nome quando eu salvei este e eu quero gerar o, um RFC 3339 Qual é Theo? Estender. Errado por um p A s A p ice, também. Desculpe. Tempo de retorno para luvas em ah, em um PS. Então você deve usar isso sempre que quiser. Eu uso ah, o dia está no seu pai, então vamos devolver o token e quando ele expirar. E aqui temos mais um. Então eles são passaportes? O que não está correto? O segredo de cima. Então vamos apenas dizer, um retornou um código de erro com credenciais incorretas e retornar para o cliente com isso para três Lá. Ok, então a próxima coisa que vamos fazer é voltar ou trabalhar nas vistas disto um ponto 17. Visualizações de API no Token e decorador: Ok, então o próximo passo que vamos fazer aqui é criar as visualizações B y para o nosso aplicativo, hum, endpoints. E com vistas ser por quê? E isso vai ser bem parecido com as outras coisas que temos feito. Nós vamos, hum, fazer um projeto. Então nós importamos o projeto do frasco, e nós vamos importar essas duas classes do a p i dot b y criamos nosso projeto, que vai ser para cima, para cima. Em seguida, configuramos uma exibição usando o método ask você para exibições plausíveis com o AP AP I e finalmente, vamos adicionar as regras. Então o 1º 1 será o post para criar um aplicativo. E lembre-se, uma soneca. É como um cliente, como um nome de usuário e senha. E depois vamos ter vista de acesso, que é Thea Other Ah, um P.I. Que vai ser a geração token. Então vamos adicionar a regra e vamos chamar isso de token de acesso barra APS. E você se opôs a isso quando quer criar um novo token. Perfeito. Então é isso, hum, agora nós precisamos adicionar este projeto à nossa taxa de inscrição Por quê? Então nós vamos importar, hum, de visualizações importar para cima, e então nós vamos registrar isso aqui em cima. Está bem. Com isso, podemos pelo menos começar a criar e, hum, gerar tokens. Embora não estejamos verificando, precisamos fazer algum trabalho nos decoradores para verificar se o token é válido. Então vamos em frente e ah, e trabalhar nisso. Então vamos para os decoradores B y e nós vamos estar aqui qualquer dia para verificar a validade dos tokens. E também vamos precisar dos modelos para recuperar o AP e o sobre os tokens em excesso . Então eu vou deletar isso, e eu quero dizer que eu d é Theo o X acima I d. e tudo o resto aqui vai ser uma coisa nova, coisas novas. Então vamos pegar o token APP, que vai estar nos cabeçalhos. E é quando passamos o token de aplicativo. E eu iria verificar se Thea pi d é nenhum ou o token acima é nenhum vai retornar um quatro ou três. A próxima coisa que vamos verificar se o aplicativo existe. E se não encontrarmos um, então vamos devolver um 43 também. E finalmente, vamos pegar o símbolo, e então vamos dizer que se não há nenhum símbolo que encontramos, então devolva o andar três. Então vamos fazer o de token deacesso. Não é o mesmo que o token do aplicativo que encontramos. Então devolvemos por três por ondulação. E, finalmente, verificamos se o token expirou. Então a maneira de fazer isso é verificar se é mais baixo do que o dia que você vê agora. E se esse for o caso, então não vamos retornar uma string vazia. Mas nós realmente não retornou uma mensagem de erro com um 43 Ok, perfeito. Então vamos em frente e testar isso no no APP 18. Instale de crypt e de de que a de e em: Certo, a última lição. Nós configuramos nossos pontos de vista e o decorador para poder registrar a abside e também ser capaz de verificar, gerar e verificar os tokens para o eixo. Então agora vamos em frente e instalar a torta ser crit, que usamos para incluir as senhas e então configurar o nosso carteiro, uh, teste para ver se tudo está funcionando corretamente. Então vamos fazer isso. Ok, vamos para um txt requisitos. E nós vamos adicionar uma nova biblioteca aqui chamada Torta Seja Cripta, e isso vai ser rabiscar para, hum e salvar isso. biblioteca aqui chamada Torta Seja Cripta, e isso vai ser rabiscar para, Então, como você instala bibliotecas depois que o contêiner de encaixe estiver pronto? Bem, você só precisa, hum, hum, chamado peep instalar requisitos do lado de fora. Então, contra aqui o contêiner começa porque ele não encontrou grande cripta nisso, um p i p y deitado três, que seria bem aqui em Port Secret. Então, Então, só precisamos fazer isso para instalar aquela biblioteca. Então o que você precisa fazer é chamar o médico composto de construção e o que isso vai fazer. Vai reconstruir todos os contentores. Mas o banco de dados não vai mudar seus dados vai realmente ser mantido sem quaisquer modificações. E o, hum, o contêiner do aplicativo é aquele que vai instalar o novo stop, mas você verá que ele vai muito rápido porque ele não está gerando a coisa toda originando . Deixe-me limpar a tela para que vocês possam ver isso melhor, para que o Doutor possa puxar, derramar e ver que quase guarda tudo. Ele só vai direto para instalar os requisitos. E lá você vai, uh, está feito. Então temos a torta de pique ser cripta instalada. Agora, podemos ir em frente e correr, ser o contêiner novamente. Então vamos em frente e fazer os pontos finais do carteiro. Então nós vamos criar uma nova pasta aqui chamada, uh, aplicativo e esses você vai ser os pontos finais? E, um, quando um fim, isso não salva. Ok, então a primeira coisa que vamos fazer é posar para o anfitrião local e vai ser cima e ah, vamos verificar qual deve ser o valor. Então, com o Post, vamos dizer que vamos precisar de mim e ter um segredo como o Jason Payload. Então vamos ter o corpo, uh, uh, cru. Eu disse que serei Jason. E quando eu tiver, digamos que este é o aplicativo móvel que vai estar acessando. E você pode pensar no abscesso diferente. Sabe, tipos diferentes fora de dispositivos ou se você é uma coisa de destaque P I. Na verdade, as pessoas vão ser um “putting”. Eles são como o nome de usuário e senha. Então, Então, por exemplo, no cofre, o seu por exemplo, no cofre, o seucomércio, porque é melhor. por exemplo, no cofre, o seucomércio, porque é melhor. comércio, Talvez eu seja uma loja de comércio. Isso é um Petco. Então o acima seria Petko aqui, e eles teriam que escolher seu próprio segredo. o Eooutro eu acho que eles vão escolher o segredo. Então vamos passar um aqui, e nós vamos chamar isso, uh, teste me disse Não, que para entrar ou gerar um token, nós vamos ter o celular e testar. Então, vamos guardar isso. E isto vai ser, hum, lembrar-se do jeito que éramos. É ficar tudo bem. Só queria verificar o formato. Então nós vamos salvar este post bunda, criar um novo up, e então nós vamos salvá-lo na pasta de animais ap i app app. Certo, então vamos checar aqui. Está funcionando bem, e vamos postar, e diz que ele não encontrou o que eu vejo. Não, acho que é APS. Então eles adoecem vê sua abside. Certo. Então eu escrevo isto, talvez guarde aquilo e depois envio outra vez. Incrível. Então temos cerca de 200, ok? E o resultado é bom, que eu acho que é o que acontece se tudo correr bem, que é bem aqui. Então nós geramos que Ah ah ah ah haash passado bordo. E Ah, e nós mais f hum, guardamos isso no banco de dados Mongo. Então vamos verificar se é esse o caso. Então vamos entrar no banco de dados Mongo. Então, para verificarmos isso, vamos abrir uma nova conta aqui, e basicamente vamos fazer o quê, e basicamente vamos fazer o quê, Dr. Excepto que eu não saia primeiro. Antes disso, precisamos verificar. Mas o nome do contêiner é agora. Você vê como, hum, aqui que a imagem é chamada Betsy FBI Web, mas o nome do contêiner, na verdade são animais de estimação. AP I Web Ron 15. Isso porque estamos executando isso com portas da Web. Lembra como estamos fazendo isso com a web de esportes de serviço? Não vamos passar por aqui. O nome. Então, o Docker basicamente seleciona um número para nós, e acho que incrementa um por um. Então você precisa jogar o cheque o nome do contêiner antes de você. Você emitiu este comando. Você também pode fazer isso com um contêiner, masvocê sabe, depende de você. Você também pode fazer isso com um contêiner, mas você sabe, Então vamos fazer, doutor, doutor, exceto eu e o nome do contêiner. E então vamos colocar aqui qualquer comando que quisermos usar neste caso, vamos fazer mongo com o host mongo db. Então é assim que você se conectaria ao banco de dados mongo do servidor de aplicativos. Então, se eu digitar isso lá, parece que eu soletrei errado. Então talvez não seja a idade do hospedeiro. Deixe-me verificar isso. Certo. É o anfitrião. Então deixe-me limpar a pele e o hospedeiro assim. Lá vai você. Então, agora estamos conectados à nossa instância de banco de dados entre go, você pode mostrar que as abelhas e você tem animais de estimação. Ap I lá. Então nós usamos isso é um P I. E então nós mostramos coleções e você vê como nós temos aplicativo agora. Então essa é a nossa coleção que criamos a partir do ponto final que acabamos de fazer. Então, se eu fizer, eles estarão acordados. Encontre lá você vai. Então você vê como nós temos um i d. que foi gerado. Isso é entre seria i. D. Este é o aplicativo i d s móvel eo segredo. Como podem ver aqui, está codificado pela cripta B. Então isso é perfeito, porque sabemos que é o teste, certo? É que o teste de obsequies, mas no banco de dados, não está armazenado histórias de status, sagacidade acerbica. E esta é uma boa prática para sempre. Se você está lidando com senhas e ou coisas assim, você definitivamente não deve armazenar essas coisas em texto simples, mas usar biblioteca de cripta grande. Incrível. Então, hum, vamos em frente e gerar um token, e eu vou deixar aquela janela lá para o caso de precisarmos verificar outra coisa. Um novo ponto final aqui, então nós vamos apenas, hum, hum, duplicar isso e vai ser, hum eu me lembro do endpoint waas. Vamos ver nos pontos de vista. Está bem. Acesso a toking APS. Então APS atos de alimentar Perfeito. E o que você precisava, uh, uh, postar. Creio que foi a dizer aqui que era o arrogante e o segredo. Então é basicamente a mesma coisa. Nós podemos passar isso como nós temos lá, mas vamos salvar isso, hum, salvar. E nós vamos renomear isso para postar criar nova atualização de conversa. Incrível. Então vamos fazer esse post e ver o que conseguimos. Incrível. Então temos 200, ok? E temos expira 2017 gerar 26 que é um mês a partir de agora. E então o símbolo é este você você i d. E novamente se formos para o nosso munger para ser e agora nós mostrarmos coleções, vamos ver que temos agora acesso lá dentro. E se eu fizer acesso de banco de dados encontrar lá. Eu tenho o I.D. I.D. o objeto i d. Oh, qual é o acesso? Não, a chave estrangeira do aplicativo. Correto. E este objeto pertence ou se correlaciona com este aqui. E o símbolo é tecido. Eu d e expira e ver como é It loja STIs em um eu o u i s o data. Porque Munger ser é capaz de lidar com isso que forma tão incrível. Temos a nossa geração de símbolos. E agora o que queremos fazer é que , para cada pedido, vamos precisar passar a conversa aqui. Então vamos deixar essa parte de cima aberta. E vamos apenas tentar fazer um agora obter velhos animais de estimação e ponto. Mas agora vamos precisar usar o, hum, nos cabeçalhos. Nós vamos precisar usar isso, você sabe, este token e o up i d Mas vamos em frente e copiar isso e eles obter todos os animais de estimação no ponto. Vamos ter uma chave chamada “X Up I D. e isso vai ser móvel. E então o token X para cima será o token que nós apenas copiamos e colamos. um Vamos verificar porummomento sem passar isto e ver o que aconteceu. Então, se eu próprio clique que esses cabeçalhos não serão enviados e nós podemos verificar o que acontece lá e ver que eu recebo agora. Ah, 43 proibido. E isso significa que isto está indo para os decoradores. Não está conseguindo o símbolo ideal. Agora, vamos ver o que acontece se eu passar o up i d. Eu ainda tenho um quatro ou três, e então vamos ver se eu faço o token errado. Então, em vez de E. No final aqui, eu só vou dizer “Ok, mande”. Mesma coisa. Recebo um proibido. Isso significa que, hum, você sabe, isso está checando o no aplicativo, e então ele verifica que o, hum, o token não é o mesmo, hum, como eles estão falando que Nós temos aqui. Então isso é um 43 também. Agora, finalmente, é rápido. O símbolo certo. Então envie e veja. Eu recebo 200. Está bem? E agora vejo a lista fora acariciando aqui, como esperado. Tão perfeito. Nós temos a nossa autenticação, hum, camada incorporada. E, uh, agora vamos começar a fazer alguns testes para estes. Para este pedaço do A P I 19. Como criar os testes do aplicativo: Então, agora que temos nosso sistema de token APS sem sistema de autorização, vamos em frente e construir testes porque não construímos nenhum teste até agora. E vai ser uma boa introdução dedo do pé como colocamos ou criamos testes para AP, olhos em geral e especificamente para apartamentos. Então, vamos começar. Certo, então vamos em frente e criar os testes. Ah, aqui o arquivo testa B y, e eu vou copiar e colar, porque isso é algo que você já viu em outros cursos fora menos cursos que fizeram, e é praticamente o mesmo. Então montamos de uma fábricadeaplicativos aqui. Nós montamos o motor mongol, pegamos a unidade de importação B, testes, importação e alguns outros arquivos. E eu também estou importando de cima modelos acontecem eixo, e eu estou recebendo o mais tempo para ser host a partir das configurações. Depois crio o meu teste de APP. Ah, caso de teste de unidade, que ah tipicamente tem um método de criação que me permite configurar rapidamente o aplicativo em si. Então eu faço uma configuração que, hum, apenas usa esse método e cria um novo aplicativo. E então eu tenho uma demolição Ah, que recebe a TV atual que eu acabei de criar e deixa cair isso épico porque, como você sabe, nós queremos começar do zero em cada teste. Então,essa Então, configuração e demolição serão chamados de todos os testes. Finalmente criamos um dicionário de aplicativos com um você sabe, linha traseira manequim e esse segredo que vamos passar para os diferentes ah, casos de teste. E como você pode ver, eu devolvo um Jasão despeja. Esta é uma função da biblioteca Jason que permite que você crie um objeto Jason a partir de um ah, ou uma string ou um, hum ou, neste caso, um dicionário que estou criando usando o píton função da biblioteca Jason que permite que você crie um objeto Jason a partir de um ah, ou uma string ou um, hum ou, neste caso, Uhm ki Ward ou função. Então esse é o começo de tudo. E então eu vou começar com o primeiro teste real, que é o teste do criador. Ok, então nosso primeiro teste será o teste de criação de aplicativos, então vamos em frente e fazer isso. Então eu crio um registro básico que vai usar o dicionário de aplicativos que criamos no, hum na, hum na classe em si. Então nós apenas postamos isso na abside e apontamos com os dados fora do dicionário. E isso é muito importante que temos que passar o tipo de conteúdo nesta solicitação. E essa vai ser a candidatura, Jason. Então a afirmação aqui vai ser que o código de status é 200 o que significa que o aplicativo waas criado corretamente Ok, vamos agora simular que temos um segredo app faltando e verificar que retorna uma mensagem de erro . Hum, então nós vamos ter o nós vamos recriar o do aplicativo, hum, dicionário, mas nós vamos estar perdendo a parte secreta dele. E agora vamos postar para a abside e apontar, e estamos passando o dicionário que não tem o segredo. E finalmente, afirmamos que está faltando o segredo, e essa é a mensagem aérea que está sendo passada do A P I P. Y Perfeito. Ok. E a última coisa que faremos é se formos, hum, repetindo o registro. Então, vamos dizer o mesmo. Envie o mesmo dicionário. Então montamos o dicionário aqui, colocamos a obrigação do tipo de conteúdo, Jason, e devemos nos levantar. Eu já existia. Ok, então vamos em frente e testar isso ou executar as estatísticas e ver como isso é feito. Então primeiro eu vou salvar isso, e eu deveria fechar algumas dessas torneiras, e eu vou criar um teste de alto nível ser por quê? Esse vai ser o corredor. E você já viu isso e eu vou passar rápido por isso. Dissemos o caminho primeiro. Em seguida, vamos importar teste de unidade e, em seguida, importar de cima teste o teste que acabamos criar e, em seguida, executar testes de unidade. O principal. Então, como fazemos o teste? Bem, nós vamos ter que descobrir qual é o nome do estivador, uh, uh, contentor. Então vamos verificar isso. Então ele gasta um p i Web, Ron 15. E eu vou fazer o seguinte Dr. ex sec I t animais ap I Web run 15 que é o nome do recipiente aqui. E eu apenas digitar Python três testes B y. Então isso deve ser executado. Isso é para que eles vissem como é. Perfeito. Então, temos alguma depreciação. Aviso. Jason se separou. Chame Jason em vez disso. Isso é de dentro do frasco, um, um empacotar em si do trabalho, então e assim vai conseguir um da Mongo Engine, que é novamente um aviso de depreciação. Mas vemos que temos um pequeno ponto aqui e ele executou um teste em um segundo. Então isso está funcionando perfeitamente divertido. Tão bom que temos nosso primeiro teste em execução e agora vamos continuar e continuar trabalhando no abscesso. 20. Testes de Token: Então vamos em frente e continuar trabalhando no teste. Então agora vamos fazer o teste de algum token. Então começamos a fazer isso. O primeiro que vamos fazer é testar a geração falante. Então nós vamos postar Tuapse usando o dicionário AB e apenas grandes são até o nosso aplicativo inicial. E a próxima coisa que vamos fazer é criar um token real, e estamos fazendo isso através do token de acesso e ponto, e então vamos pegar o token do, hum do retorno, Jason. Mas veja, neste caso, estamos carregando os dados que estão sendo retornados no valor retornado no valor de resposta . Estamos gravando com o dever se oito. E depois vamos receber a ficha. Hum ah. Levou a propriedade ou o símbolo, uh, pedaço do Jason. Isso é de graça em troca. o Eoteste aqui vai ser que eles estão falando. Não é. Não é assim. Se esse símbolo é, não é, então isso significa que a Tess falhou. O próximo teste que vamos fazer é testar se estamos perdendo o segredo, então vamos verificar se o token não funciona. E também vamos verificar se o segredo está incorreto. E então estamos passando o errado, você sabe, segredo e acima ou no caso, neste caso, o 1º 1 é o É o que estamos perdendo o segredo. E no segundo caso, estamos perdendo o relatório ou passando A incorreto. Absolutamente Então, este 1º 1 tem sido um retorno faltando segredo da Europa, e o próximo vai dizer credenciais incorretas. A próxima coisa que vamos testar é ver que o token funciona, ignorando o token certo. E devemos sair 200 lá. E também vamos testar se passamos na ficha errada. Estamos tentando colocar os animais no ponto com uma ficha incorreta, então devemos pegar um quatro ou três desse pedido. O último teste será um símbolo de expiração. Então nós vamos, hum, tentar fazer um acesso de 31 dias a partir de agora e nós vamos agora tentar com o com o token existente , e isso já vai estar expirado. Então devemos começar a conversar. Expirado no nos dados. Então é isso. Isso é todos os testes que eles estavam construindo para o APP. Vamos em frente e fazer os testes. Então vamos em frente e ir para o terminal quando um limpar a tela aqui e lembre-se que seus, uh, uh, contêineres de encaixe devem estar executando tanto e um, o Munger para estar no aplicativo. Por isso, vamos magoar-nos. Vá em frente, Doutor. Exactamente. I t animais AP I. Weber em 15 que é o nome do recipiente em execução Bison. Três Testes P. Y. Perfeito. Novamente. Recebemos avisos de depreciação, mas nada com o que se preocupar. Ah, mas diz que fez dois testes em quatro segundos e tudo correu bem, então é isso. Isso é para isso é tudo para a abside. E agora devemos começar a trabalhar nas lojas e apontar para a alma do FBI. Vamos começar a trabalhar nisso 21. Como começar o ponto de fim da loja: acabamos de trabalhar na abside e no ponto. E agora vamos começar a trabalhar no ponto final da loja, que vai descrever as lojas físicas onde vamos ter nossas camas disponíveis e eventualmente teremos um animal de estimação atribuído ou associado a isso com essas lojas. Então vamos começar a trabalhar nas lojas e claro, vamos começar com as plantas de quatro lojas. Então vamos ver como fazemos isso. Ok? A primeira coisa que vamos a um é criar uma nova pasta aqui chamada Pets. Quero dizer, loja desculpe, loja, e nós vamos criar um NDP. Por quê? Para que possamos importar isto é um módulo por telefone, e a próxima coisa que vamos fazer é ter uma vista, B. Porquê? E vamos fazer algo parecido com o que fizemos antes. Quais olhos para criar a loja um p i, um, arquivo e, em seguida, criar um blueprint a partir dele e, em seguida, armazenar as vistas para , hum, , hum,as lojas e ponto para o get e post para lojas, bem como nós vamos habilitar get put e elite quatro história a Esta é a primeira vez que vamos estar usando colocar na liderança. Então isso vai ser muito excitante Porto. Será usado para atualizar as lojas e o principal será para o líder nas lojas. Então deixe-me dizer isso para que essas sejam as vistas. E vamos em frente e criar os modelos B y e ele vai ser algo bem padrão também. Então nós vamos ter a loja com um externo eu teria um bairro, um endereço de rua, um estado da cidade e um código de gole e o número completo e nós vamos ter em índices externos como o agora Uma coisa a notar aqui é que, Nos animais de estimação quando estávamos tínhamos os animais de estimação. Inicialmente, claro, nós estamos armazenando isso do banco de dados, mas nós tivemos, como este I d, que era 123 Agora aqui nós poderíamos ter X Tex girar como o ser o mangá para ser I D. é claro, nós estamos armazenando isso do banco de dados, mas nós tivemos, como este I d, que era 123 Agora aqui nós poderíamos ter X Tex girar como o ser o mangá para ser I D. realmente não é uma boa prática de segurança para expor o seu ah internalizado o seu como mongo db i d. ou ainda pior para a minha sequela, eu d. Então sempre use algo como este como um eu d externo que você vai estar gerando. E de novo, vamos usar-te. Tem ideias para isso? Mas isso é uma coisa muito importante, como a segurança que você deve sempre estar atento é ter sempre extras como estes quando você quer, hum, permitir hum, que as pessoas selecionem esses objetos. 22. A Biblioteca de Schema do JSON: Agora, quando começamos a trabalhar na história p I Uma coisa que foi especificamente desafiadora para mim como a peça de validação. Então, agora temos uma loja muito complexa, um modelo que tem todos esses campos, você sabe, rua e código, bairro e coisas assim. E eu queria ver como ele poderia, hum, hum, validar essas e uma abordagem que eu pensei em fazer Waas de alguma forma hackear formulários wt t , mesmo que eles não sejam tecnicamente formas que estamos validando talvez olhando para o seu classes de validação e hardwire que. Mas então eu comecei, você sabe, pensando em outra biblioteca, que é bonita, é muito útil, e seria uma boa opção para este projeto. E eu acho que é realmente bom em geral, também, também, se você tem, como, como, objetos Jason e que bibliotecas chamado, uh, Jason Schema, e nós vamos tomar um rápido Olhe para ele. Uma coisa que você vai notar é que Jason Schema pode ser instalado em um suprimento da biblioteca . Uma coisa que você vai notar é que Jason Schema pode ser instalado em um suprimento da biblioteca E, hum, se olharmos para o exemplo aqui, é perfeito para uma validação A P I, um programa, porque nós podemos, hum, nós temos um tipo muito flexível de como definição de esquema, e podemos definir, você sabe, que as coisas são strings, então elas são como números e coisas são necessárias, como você pode ver neste exemplo. Então, há muitos exemplos aqui que eles passam. Mas eu vou para a Coréia. Um exemplo rápido para olharmos e te apresentarmos ao esquema do Jason. Minha biblioteca. Antes de fazermos qualquer coisa, entanto, precisamos de um dedo no pé da biblioteca um requisito 60. Então vamos ter o esquema do Jason, hum, com essa versão lá. E precisamos instalar o dono no nosso contentor . Então vamos construir os contentores mais uma vez. Deixe-me limpar a tela e instalará o esquema do Jason. Minha biblioteca. Ótima. Então, podemos executar o contêiner novamente, e é ir em frente e criar um arquivo rápido aqui que irá. Eu não estaria armazenando no, hum, no repositório, mas só para vocês verem? Então, um, este é o que eu esquema Jason seria parecido e deixe-me colocar isso um pouco mais do dedo do pé esquerdo . Hum, então nós temos que importar do Jason plano, má validação. E então podemos ter um esquema fora de um objeto que queremos validar contra. Então, neste caso, este é um tipo de objeto, e as propriedades são preço, nome e externo, como o preço e nome necessários. Então, a partir desses campos dessas propriedades, uma vez que eu exija nosso preço e nome perguntado lá, descrito aqui e notar que nós temos um padrão perfeito um para você idéia. Então nós estamos esperando, você sabe, que eles a entrada ou o objeto Jason ter esse formato e então a maneira que você , hum, você , hum, hum, validou é que ele acabou de chamar validar? Você colocou o objeto. Então este é o nosso direito aqui e você em você compará-lo com o esquema e você vai ter, um , você sabe, um sucesso ou outra mensagem. Então vamos fazer isso de rápido, então eu vou ver Oh, desculpe, eu tenho. Lá vai você. Eu tenho uma briga no três, e nós vamos dizer Valle teste B Y. Uh, então eu acho que agora tem um nome diferente, certo? 16. Desculpe. Oh, é assim que são 16 agora. Ok, então eu não obtive nenhuma resposta, o que significa que foi validado. Mas, por exemplo, digamos que eu não passe ovos aqui e guarde isso e depois executo de novo. Veja, eu recebo ah, um validação necessária no esquema e, uh, e diz que preço necessário e tipo de nome óptica. Então, basicamente, o, você sabe, o erro de validação que eu posso pegar de lá é que o nome é uma propriedade obrigatória. Então você pode ver que é uma pequena biblioteca muito flexível, e nós vamos usá-lo para uma loja em ponto e eso Nós vamos definir esse esquema para a loja. Então vamos ver como fazemos isso. Então vamos em frente e criar nossas lojas, Chema e vamos colocar isso de volta aqui e eu vou chamar esse arquivo de esquema e aqui está o esquema. Então eu tenho É um objeto tipo, e então nós temos propriedades Neighborhood Street, endereço City State e ver como eu sou obrigado que é uma letra maiúscula de duas letras. Esta é uma expressão regular. Acredito que já vimos um pouco fora disso no passado. Também temos um núcleo de gole, que deveria ser cinco números, e também temos um telefone que tem uma espécie de código de área e, em seguida, três dígitos e , em seguida, quatro dígitos com traços no meio. Então, se algo não coincidir com aquelas coisas que iriam obter um ar e eu estou dizendo que antigas de todas as propriedades são necessárias, então esse é , hum, que vai ser o esquema que vamos usar. A outra coisa que eu vou usar aqui para facilitar o A P I. É o conceito fora de um modelo? Então, de novo? Porque é um objeto tão complicado. Não quero estar sempre a construir os objectos do Jason. Então o que eu vou fazer é eu vou criar um templates b y com duas funções. Um vai ser este objeto de loja que se você passar a loja do motor Mongol ou objeto de banco de dados mongo para ele, ele vai retornar. Você sabe disso bem? Tipo endereçado ou formatado, umobjeto Jason que tem o I.D. o bairro City State, etc. Tipo endereçado ou formatado, um objeto Jason que tem o I.D. I.D. o bairro City State, E eu posso fazer qualquer tipo de transformações lá. E como você pode ver, eu também estou tendo uma seção de links lá dentro. Então isso significa que toda vez que eu preciso mudar qualquer um dos formatos Jason. Eu posso fazer isso aqui muito facilmente. E também para as lojas quando tenho as lojas, , como uma lista de consultas. Eu vou fazer o seguinte e nunca vou retornar A Eu vou ter uma matriz de armazéns frigoríficos, e eu vou devolver as lojas de volta para o usuário. Agora, uma coisa é que este é um estado temporário. Vou mudar isso depois. Bem, veja por que é quando começamos a usar a imaginação. Mas, por enquanto, vamos viver isto. Ah , como um espaço reservado para voltarmos. Ok, então acho que estamos prontos para começar a trabalhar no A P I especificamente. Então vamos fazer isso. 23. O arquivo da API da loja: Ok, agora que vimos Jason Schema sobre como vai ser muito útil para nós validar o usuário ou a entrada do cliente no A P I. Agora vamos em frente e começar a trabalhar no A p I para as lojas. Então, vamos começar. Ok, então vamos em frente e criar o arquivo A P I e nós vamos, hum, fazer algumas importações aqui. Então vamos importar frasco, método view, e método view, e alguns dos elaborados que vimos de bandeiras como o Sol. Se eu escrever pedido a bordo modelo de renderização também você I d e Jason e estes últimos são novos em termos fora, como nós nunca usá-los. Então, um é chamado de Jason Schema rascunho para validador, e o outro é chamado Jason Schema ponto exceções importar melhor correspondência, Então vamos ver como nós usá-los em um pouco. Também teremos decoradores Thea. Ah, o up necessário ah, importar os modelos da loja e novamente, este último para um esquema de loja. Meu esquema de importação e modelos de loja, objeto de loja de importação e objetos de lojas são como um novo uso. Mas, como você pode dizer, isso está relacionado aos modelos de loja que temos aqui. Hum, onde temos os diferentes modelos para ambos os objetos de lojas individuais e, você sabe, o objeto de lojas plurais. E também temos o a partir do esquema de loja, e vamos importar o esquema em. Vamos comparar a entrada de declínio com isso com o esquema. Então vamos ver como fazemos isso. Então, aqui, vamos guardar. Vamos estar na loja da turma com o decorador. E novamente, vamos verificar se não há, hum, você sabe, não há nenhum pedido, Jason. Então estamos a bordo dos 400. Se não for um pedido de “get “, então vamos passar pelo método “get “ ”. E se há uma história d sendo passada no método get, então sabemos que vamos retornar o objeto da loja individual. Então vamos apenas passar o ah, a resposta como o objeto de loja do modelo. Caso contrário, vamos pegar todas as lojas. Então é o que mais lá dentro. E então nós vamos apenas, uh, retornar as lojas do da consulta para o objeto lojas. E como dissemos antes, isto é como um processo de trabalho, mas vamos apenas devolver esses resultados de uma forma muito linear. Mas vamos fazer um trabalho melhor quando fizermos a paginação, que é algo que realmente precisamos usar nos olhos da AP. Mas qualquer caso que tenhamos, se houver uma loja, obtemos essa história. Se conseguirmos a loja, devolvemos o Jason, se eu responder, que é o resultado está bem, e então a história em si é o objeto da loja a partir do modelo que será esta coisa aqui e ah mais nós estávamos pedra um 44 significando que nós não com eles encontrar que que essa história t de outra forma, nós se eles dá-lo para obter e é lojas porque não está em uma história O balanço passado, eles foram devolvidos de volta todas as lojas. Agora vamos ver o que fazemos com o Post e o Post. Vamos pegar a loja do Jason do pedido, Jason. loja do Jason do pedido, E aqui estamos usando este novo método chamado erro. Ah, melhor queda de correspondência para o validador sobre isso. E isso só vai, hum, vai devolver todos os erros que obtemos da comparação daquele esquema com a história que Jason está sendo que é impasse para nós. E se houver um ar, em seguida, irá retornar uma mensagem estreita com o com a mensagem de erro que o validador de esquema está passando com um 400. Caso contrário, as coisas vão bem. Então nós vamos criar um objeto de loja com o nós vamos criar um ID externo Um, nós vamos apenas armazenar o endereço real da vizinhança cidade, estado, CEP e telefone que foi passado sobre o pedido. Então salvamos isso. E então jogamos de volta para a resposta com o objeto da loja, que, novamente, é o modelo e a loja, um, que acabamos de salvar no banco de dados mongo e retornamos um dois um, o que, como você deve se lembrar, significa que a Postagem foi bem-sucedida e estava retornando conteúdo para o usuário. Então, uh, esta coisa aqui, é claro, sendo a coisa nova. Ah, é você sabe, você pode investigar um pouco mais sobre o quê? Isso, hum, o que todo esse tipo de tipo de estou envolvido. Mas é praticamente que usamos da mesma forma todas as vezes. Então você pode apenas usar esta cópia e colar isso e você apenas rápido o, hum a entrada do cliente, o objeto Jason dentro desses erros analfabetos hum, método que, hum que vai passar pelos erros se o, um se o, você sabe que o modelo Jason Schema não coincidiu com o que eles usam várias passagens. Então é isso. E vamos criar apenas entradas fictícias para o put e a elite, que serão implementadas mais tarde. Então essa é a P I. B. Muito, muito simples. Não é muito complicado. E então vamos em frente e experimentar estes para fora. 24. Como experimentar o ponto de fim da loja: Certo, então vamos testar isso. Nós vamos criar uma nova pasta aqui, fria, uh, loja. E eu vou para Vamos clonar o do post aqui, o post animais e apontar e colocá-lo aqui na loja. Vamos renomear isso, e ele vai ser loja posada, ou melhor, gabar-se, criar loja. Ok. E nisso temos os cabeçalhos. Hum, nós precisamos adicionar o aplicativo no, hum, sim, eu tenho isso aqui. Devia ter copiado isto. Talvez, mas temos o X passo acima I d. Então vamos criar essa mistura. Eu serei e é móvel. E depois o segredo do X up. Oh, não, ele está falando, símbolo certo. E acredito que ainda temos o mesmo símbolo. Mas se não, o mundo irá gerar um novo. Eles colocaram isso aqui. Onde isso vai acontecer? Lá vai você. Ok. E vai ser uma publicação de conteúdo. O Jason. E aqui eu preciso colocar o telefone do bairro todo esse campo, então eu vou talvez copiar e colar isso. E, uh, isso é um pouco para o bairro assim. Eu vou dizer, um, um, ponto da faculdade no endereço da rua. Vai ser 1234 Main Street e a cidade. Vai ser, um, um, Bronx. O estado vai ser Nova York e o código da cidade uma vez aqui, 33 e o telefone 718453 para 3 para 32 OK, então vai ser postado para armazenar. E então você tem Jason. Isso parece bom depois de cabeçalhos e tudo mais. Então vamos ver se podemos ter isso funcionando aqui. Está correndo. Temos o nosso banco de dados mongo para testar isso. Ok, então vamos em frente e colocar Deixe-me salvar isso ótimo e enviar, uh, porque você não foi encontrado no servidor. Então vamos ver as vistas aqui. Oh , são lojas. Lá vai você em segurança e depois mandou ainda. Oh, Deus. Lá vai você em segurança e depois mandou ainda. Oh, Colocar armazenado. Certo, seguro e a terceira vez é um charme. Sem extra. Ser lojas anfitriãs locais. Está recebendo um 440, eu sei. Acho que perdi um passo aqui, que é adicionar as plantas Correcto. Então vamos ver as plantas aqui. Vai ser de oops. Assim, a partir de vistas da loja, importar loja para cima e para cima registar-se abaixo da loja de impressão aplicativo Muito bom. Salvei isto. Iniciamos o servidor, mas ele começou. E vamos tentar outra vez. Oh, eu tenho o direito. Estou colocando um coma extra aqui. Diz, esperando propriedade, nomeando, colocando aspas duplas, linha oito. Isso é o que tipo de como me apontar para o para que o ar para enviar. E lá vai você. Temos a nossa primeira loja. Eu tenho um 21 criado. Eu tenho o resultado. Certo, Cidade da Loja, Bronx. Aqui está a ideia que foi gerada. E, uh, tudo parece muito bom. Incrível. Então vamos fazer outro. E este, vamos fazer um “get”. Então vamos duplicar isso. Você ia ligar, comprar loja individual e atualizar. Ah, vamos ver. Então é uma loja get. Tenho os Chapeleiros lá. Então eles devem trabalhar quando dizemos isso e, em seguida, enviar , uh, eu não estou recebendo nenhuma loja, eu acho que porque talvez eu não sou, hum Agora isso é obter todas as lojas direito, então isso seria ser declarado que Pegue todas as lojas. Eu acho que é porque nós temos nós realmente não, hum, habilitado que estávamos apenas retornando, você sabe, uma corda vazia. Mas vamos experimentar uma loja específica que é que quando acabamos de criar um e eu acho que perdi o que eu d lá. Mas podemos verificar no banco de dados. Então mostrar as abelhas usam apostas, um p eu mostro coleções. Então eu vou encontrar a loja Devi, e eu tenho a ficha lá. Uh huh. Então eu vou pegar a loja individual. Então vamos duplicar isso, editá-lo, obter atualização de loja individual, e então eu vou fazer lojas e o i d específico. Eu não tenho que passar uma barra final lá porque este é um tipo de indivíduo. Não é como uma pasta, por assim dizer. Então vamos guardar isso e enviar perfeito. Então eu tenho o Você sabe, os iniciantes hoje eu d Há o h Air h ref para o auto, e isso está parecendo bom. Tão perfeito. Esse Assad está funcionando bem. Agora vamos trabalhar na colocação na liderança rapidamente, e então vamos implementar para ver de verdade este. As lojas Guettel 25. Implementando a colocação e a aplicação de: ok para este vídeo, nós vamos implementar o put e elite para o ponto final da loja antes de fazer isso em. Como já disse muitas, muitas vezes, não apagamos mais as coisas. Na prática geral, quando temos, é uma bandeira que dissemos, um pouco de ouro que está em uma vida ou, um, um, você pode dizer publicado ou qualquer que seja o caso. Mas nós não excluímos registros porque hoje em dia o armazenamento é tão barato que ele não faz muito sentido, você sabe, as coisas principais, e você sempre tem um tipo histórico de versão como fora do que aconteceu. Você não perde nenhum dado. Então, a maneira que eu vou implementar a função de exclusão aqui é eu vou adicionar um campo chamado Live e que parece que vai ser um ouro e o campo D V vai ser l. e a falha é igual a verdadeiro. Então, quando criamos por padrão, é verdade e nós vamos ter o Nós vamos adicionar vida ao índice que temos aqui porque nós vamos estar procurando por coisas que são você sabe, este eu público eu d ou externamente o fim que a bandeira da vida é é é verdade. Então, com essa mudança, podemos agora ir em frente e fazer um pouco fora modificações na história ah P. Eu, um então nós vamos aqui, precisamos agora verificar se o pedido é obter, uh, podemos agora ir em frente e fazer um pouco fora modificações na história ah P. Eu, um então nós vamos aqui, precisamos agora verificar se o pedido é obter, uh, não está entendendo ou não é a elite porque ambos os métodos não vão ter uma carga, hum, hum, ou Jason, hum, dados lá. Então nós vamos dizer se, hum, hum, método de registros não é obter e nós poderíamos solicitar método não é a elite elite. E, uh, e não pediu Jason em cerca de 400. Isso significa que excluir não. Não estamos esperando nenhum pedido ou Jason lá dentro. A outra coisa é, agora vamos procurar por externo como a história igual d onda. Nós vamos ter vida igual a verdade, porque dessa forma, você sabe, você sabe, apenas conseguindo se as lojas estão vivas e a mesma coisa com os objetos da loja, tudo o que nós vamos dizer agora objetos da loja filtrar vida igual a verdadeiro Incrível. Então isso nos deixa agora criar o put e os métodos de elite bem aqui. Então ainda assim o método put vai ser muito semelhante ao post, porque lembre-se, porque lembre-se, colocar é sobre, hum, atualizar o registro. E então vamos encaixar todos os campos que estão sendo passageiros solicitando Jason. E lembre-se que colocar está esperando que todos os campos batam sendo passados onde não podemos passar. Sente-se no seu bairro ou algo assim. Então vamos passar por uma loja, e a primeira coisa vai verificar se essa loja existe. Se não existe, então fazemos um para um quatro. Então vamos fazer a mesma coisa com o validador do Jason e fazer com que seja validado. E se não, então retornamos um erro 400, e então aqui vamos ter uma lista de todos os campos e salvar isso. Então, neste caso, não é um cofre. É realmente uma atualização. Mas isso é, você sabe, entre os melhores, você sabe, nós vamos fazer o seguro, que é a mesma massa que o, hum pediu para o ah, como nos salvar um novo. Ok, essa é a coisa bonita, muito direta e tentou liderar agora, então a elite vai ser a seguinte. Pegamos a loja e verificamos se a loja existe. E se não, então nós devolvemos um 44 Bem, o sábio nós apenas definir a vida da loja para falso salvá-lo. E em troca, uma resposta de dois ou quatro, o que significa que não estávamos devolvendo nenhuma informação. Mas, hum, estamos confirmando que a operação realmente passou. Então vamos tentar fazer essas coisas do lado do carteiro. Ok? O primeiro que vamos fazer é fazer um put, que vai ser muito parecido com seus posts. Então vamos em frente e duplicar isso, e vamos editar isso para ser colocado loja de atualização. Ok. E então aqui vamos ter uma função put. Nós vamos passar o mesmo, exceto que eu d em token e no corpo. Podemos mudar o que quisermos. Então vamos dizer que assim vamos ver. Vamos mudar. Hum, digamos que o bairro assim em vez de fora. Oh, espere. E você precisa passar na loja real. Que você está indo, Toby. Que você está indo, Modificando? Não, guarde isso. Ok, então digamos que o bairro agora é, hum é uma sensação do Bronx. Ok, então o servidor recebido está rodando aqui Perfeito. Parece bom. E vamos enviar esse pedido e eu recebo um 44 Agora, a razão para se levantar para um quatro é porque nós você lembra que nós adicionamos um novo campo chamado Vida aqui e nós também adicionamos isso para os índices e os registros existentes não têm essa vida campo. Então é ah, quando este, hum este registro as idéias da loja que estão sendo procuradas no FBI e ele tem isso, hum, isso tem isso, como picles através primeiro. Basicamente está caindo para o 44 porque não é encontrar uma loja que tenha a vida igual verdadeira, porque esse recorde agora não tem esse campo de vida. Então, a maneira mais fácil de fazer isso é descartar uma vez que estamos em um ambiente de desenvolvimento, apenas descartar a coleção e, em seguida, criar uma nova loja. Desse ponto em diante, se você , você sabe, acabar na situação em que você tem existente, uh que são base e você quer fazer uma migração com novos campos, você precisa escrever algum tipo de script que lê todos os campos. E isso é que o novo campo e, em seguida, indexar, essas coisas para que seja um pouco mais complicado. Mas já que não estamos realmente armazenando nada de valor aqui, estamos apenas indo em frente e largar a coleção. Então, para fazer isso, vamos ao banco de dados e vamos dizer, você sabe, usar uh, apostas. se Esevirmos as coleções, vamos ver a loja B. E agora já não devíamos ter essa colecção. Então, agora, quando? Quando o novo registro é criado, ele terá o campo de vida e será índices corretamente. Então vamos fazer um post novamente aqui com específico, uh, nós temos a mesma loja que temos antes. Vamos enviar isso e obter um novo I D. e agora vamos tentar, uh, atualizar aquela loja com a sensação Bronx, deixe-me tentar entrar na loja grande. Vamos usar isso aqui e eu fico com a loja perfeitamente bem ali. E agora vamos atualizar essa ascensão. Temos faculdade aqui. Vá para o Bronx, sinta agora, então vamos guardar lugar e depois enviar. E agora eu tenho o correto atualizado aqui com 200. Hum, e é o, hum eu deveria dizer que eu tenho, eu estou chegando em 200. E finalmente, vou tentar a função de apagar. E finalmente, Então eu vou apenas clonar este aqui e nele, a loja individual de elite, e nós vamos fazer os leads aqui, e é o mesmo que eu d aqui, 65 a direita. Então vamos guardar isso. E nós vamos enviar e eu posso pagar nenhum conteúdo, que significa que a operação passou. Se eu agora tentar obter essa loja, Eu recebo um para todos para não encontrado. Mas no banco de dados, você ainda deve ver que, hum, aquele registro lá, mas nós temos vida igual a quedas. 26. Como implementar a Paginação em GET em todas as lojas: Então, nesta lição, vamos implementar paginação para a loja, obter endpoint, e você deve sempre retornar resultados paginados. Quando você está recebendo quando você está indo para obter que vai envolver uma lista fora de itens ou objetos. , É que, você sabe, você sabe, a melhor prática para obter uma lista de objetos é a expansão oito. E é sempre melhor para mim, sem servidores, escalabilidade, e e para o cliente ser capaz de ver qual página fora que fez essa consulta disse ele vai ficar, então vamos ver como implementar isso. Ok, então, a fim de implementarmos a paginação que vamos precisar, vamos usar o método de paginação ou funcionalmente iniciar o motor mongo fornece. E então vamos definir uma constante aqui, e vamos chamá-la de lojas por página. E quando eu disse isso para 10 Então eu vou dizer, para cada hit no get, nós vamos ter 10 lojas e então, você sabe, bem, paginado através disso, então eu vou ter, busca Embuscade todas as lojas eu vou comprar isso, hum, hum, estes são objetos de loja, filtrar vida igual a verdadeiro. E, hum, nós vamos passar um parâmetro de página sobre o euro que nós vamos obter e depois Pagine oito usando essa página e as lojas para página. Então vamos fazer isso. Então este é o pedido que vamos passar e, em seguida, armazena igual a lojas. Essa página paginada é igual à base que estamos passando. E como você pode ver aqui, se você não conseguir nenhum, então nós vamos padrão dedo um e, em seguida, por página vai ser a constante que nós temos no topo eles pensam que vamos fazer é inserir um auto-HR oito link ref para, Você sabe, apoio, ódio deve. E nós vamos dizer que esta é uma página uma página específica. Então nós vamos dizer, hum, links, e nós vamos ter o espaço da loja HF h ref é igual a página por cento s. E estes irão, hum, , coincidir com a página que foram em que está sendo passado sobre o pedido aqui. , Assim,podemos dizer que este conjunto pertence a uma página específica e acho que faremos para fazer com que o ódio deva. A queixa é que vamos dizer como chegamos à página anterior? E como chegamos à próxima página? Então o cliente sabe como é a Pagine 8. Então nós vamos fazer isso é o seguinte que nós vamos ter se lojas tem anterior e , como você sabe, tem dito anteriormente, tipo um funcionário que paginação no motor mongol tem e nós vamos sofrer a seção de links de resposta Ah, a página anterior. E também, se as lojas tiverem o próximo, então vamos mudar as próximas lojas. Hum, que novamente é uma função fora do motor ah off mongo tem pré breve número e próximo número como parte de sua paginação nosso sistema tão legal. Então nós vamos ter um Não só nós vamos ver qual é a página atual, mas vamos dizer ao cliente, Ei, Ei, e se você quiser obter o próximo set ou o conjunto anterior, então você pode acertar isso aqui mesmo. Então vamos salvar este arquivo e a última coisa que vamos fazer é modificar os modelos. E como já vos disse, isto era uma espécie de espaço reservado. Vamos substituir isto com o seguinte, vamos ter um objecto de lojas, e depois vamos espancá-lo através dos itens da loja. E eu deveria saber os itens da loja. É a paginação tipo de consulta como definido ou a página com os 10 resultados ou qualquer loja por página que temos? Um, um tipo de identificada. E então vamos mudar o objeto da loja. E como você pode ver, é isso que está se referindo, Cante isso. Então, onde temos uma maneira muito escalável de reutilizar isso, perguntou o resultado individual para cada objeto e finalmente retornará o assunto da loja, que vai ser esta lista de objetos que são óptica de loja. Então é basicamente isso Vamos ver como conseguimos as lojas. E só para que saibas, eu meio que eu meio que implementei ou inseri um monte de registros. Então, se você bater na loja Devi, tudo bem. Agora tenho que colocar as especificações. Eu tenho isso, você sabe, você sabe, um monte de registros fora para que possamos ver a paginação melhor. Então, na verdade, eu acredito que 20 algo armazena lojas fictícias que eu criei. Então vamos ao carteiro e ver se a paginação funciona. Então, Então, o serviço em execução parece que tudo é bom. Então vamos em frente e trazer lojas mais antigas aqui, então eu vou enviar, e aqui está você. Então temos um 200. Está bem. E como podemos ver, você tem links. Eu tenho um “eu “, que é a página um. Então isso vai ser ph. Um fora do set. E então eu tenho uma próxima armadilha, que é spates, também. Então diz resultados. Está bem. E então eu vejo as lojas aqui, hum, e se você, você sabe, contar, deve haver 10 em lojas lá, então isso parece bom. Então, como vamos para a porta ao lado? Bem, devemos uma página para aqui. Hum, e eu posso colocá-lo aqui. A página é igual a dois. Envie e veja. Agora eu tenho um “eu “, que é a página dois. Eu recebo um anterior, que é o Espaço um e o próximo, que é a página três. E de novo, de novo. Você sabe, as próximas 10 lojas. Um, note como você sabe que o dinheiro quatro é ISA lojas objeto que temos em nosso modelo, que tem o eu e e todas as coisas lá dentro. Então eu tenho que dizer, parece muito legal. E finalmente, página três. Isso só tem anteriormente não tem o próximo porque só temos 23 lojas. Então aqui vemos apenas, Ah, eu acho que são as restaurações. 12 Sim, três lojas. Tão incrível. Isso parece muito bom. É um conjunto de resultados muito profissional e paginação, como eu disse, deve ser o método ou você usa quando você tem, você sabe, qualquer lista fora de objeto que você vai retornar de volta para o cliente. Então é isso. Vamos continuar, um, um, porque precisamos de alguns testes para isso para o aplicativo da loja, então vamos começar a fazer isso. 27. Loja de testes: nesta lição. Vamos implementar os testes para as lojas e apontar, e vamos começar a usar algo completamente novo que não usamos em nenhum tribunal tem até agora, que são acessórios. Portanto, os recursos são pensar neles como dados que você pode armazenar por conta própria, seu repositório real que contém dados tempestuosos que então você pode carregar dinamicamente em seus testes para que você possa testar coisas como, por exemplo, seu repositório real que contém dados tempestuosos que então você pode carregar dinamicamente em seus testes para que você possa testar coisas como, por exemplo, vai usá-lo para a paginação. Então, em vez disso, você criando como código toe muito uso, como você sabe, 23 histórias como a que eu tenho agora você realmente cria esses arquivos chamados fixtures e, em seguida, quando? Quando os testes, estou a ver as fotos, a carregar na base de dados fictícia, e depois podes fazer operações nelas. Então vamos ver como fazemos isso. Então eu já carregei os testes do repositório, e você pode, é claro, ver o que eles chamam a si mesmo no link que eu estou fornecendo. Mas, hum, eu só preciso de um olho como ir e digitar todas essas coisas do zero porque vão ser coisas que você já viu. Então vamos passar rapidamente por eles. um Temosumcaso de teste de loja onde criamos um cochilo. Nós configuramos isso como um social e derrubamos. Temos outro dicionário de diretores que vai ser uma linha de estimação, segredo de estimação. E isso é meio novo. Estamos fazendo um dicionário armazenado onde temos uma espécie de amostra em, ah loja objeto que vamos usar uma e outra vez. E, hum, nós também vamos ser criados algo. Um método que eu acho que eu usei muito que é criar o aplicativo um p i. Então eu apenas tipo de como postar para o abside com o com o aplicativo, o realmente o dicionário aplicativo que temos aqui no topo e, bem como gerar um token de acesso que nós meio que gostamos de precisar também. Então eu tipo fora apenas supostamente para o token de acesso com o objeto acima dicionário e, em seguida armazenar que Assad é uma propriedade para o auto-token antigo clássico que então eu posso reutilizar. E, finalmente, uma coisa que não vimos no passado é ter um método de cabeçalhos. Onda novamente, isso é para tornar as coisas mais fáceis para o para o acesso fora de cada pedido, porque requer que passamos a aposta alinhada e o token. Então essas são funções auxiliares que vamos usar. Então, ah, as primeiras, hum, lojas de teste. Um, tipo fora da bateria de teste vai ser Ah, bonito. Também muito simples. Então criamos um aplicativo P I usando esse método que descrevemos acima e geramos um token de acesso . Agora, neste momento, neste momento, temos o auto-falar disponível, e então vamos criar uma loja. Então, um, observe como nós temos, um Heathers é igual a auto-cabeçalhos, que é este mito que temos aqui no topo. E agora você pode ver por que eu fiz isso. Ah, uma função porque vamos usar isso uma e outra vez. Então aqui criamos uma loja. Passamos o dicionário dolorido e verificamos que temos um 21 que é criado, e também buscamos a loja que eu d do Jason. Isso é retorno para que possamos voltar a usá-lo depois. Então podemos testar a obtenção de uma loja usando essa loja I D e que você recebe um 200 nós também podemos editar a loja. E aqui eu passei, como um tipo diferente de objeto de loja. E então eu coloquei o como você pode ver aqui, Eu tenho divertido colocar. Hum, então as lojas e ponto e então eu verifiquei que o novo telefone que eu passei aqui está sendo armazenado naquele objeto. E finalmente, estou testando a liderança. Então, você sabe, eu apenas ir em frente e excluir aquela loja que eu servi que eu recebo um a um quatro, e então eu também, hum, fazer aquário mongo db para ver se a contagem fora lojas que são vida se torna falsa igual a um. Então, tudo isso é meio fora. Não é muito surpreendente. E eu acho, você sabe, novamente, você pode vê-lo em detalhes quando você não sabe o código do do do repositório . Agora, aqui é onde as coisas ficam interessantes. Eu vou ter uma, hum uma mensagem que eu vou ser capaz de, hum acesso a partir dos passos, e eu vou colocá-lo no aplicativo. Ser por quê? Porque está relacionado com o aplicativo. Hum, então aqui no final. Vou fazer o seguinte. Eu vou definir um dispositivo, um, um método e o que ele faz, ele aproveita a importação de mangá com, um, que é um comando que a TV Mongol fornece. E basicamente você pode definir Ah, host, host, que é o esconderijo h. Você encontra o banco de dados, que é que Dash d Um, você passou o traço C, que é o, ah, coleção que isso vai ser Onde você vai importar esse arquivo para? E então temos um arquivo, que é um arquivo do Jason, que vamos colocar isso em disfunção. E então usamos o comando call, que é um python como baixo nível, um, como um método que permite que você execute, você sabe, você sabe, comandos shell dentro de um script python. Agora, para isso, eu preciso adicionar uma biblioteca aqui chamada So Process. Então, quando eu digo que é de algum processo de importação legal. E, hum, eu também preciso que eu acredite nos “Os “, hum, um, vamos ver, não só lá, Wes, eu preciso que entre ir para ser o anfitrião de nós. Vou importar isso da configuração. Assim, a partir de poupança importação Mongol O d B host. Acho que não preciso de mais nada aqui. Então vamos guardar isso, então a outra coisa que vamos fazer é criar um ... eles ah, acessórios no ah, nas lojas. Então vamos guardar isso, então a outra coisa que vamos fazer é criar um ... eles ah, acessórios no ah, Na loja. Ligeiro diretório. Mas eu tipicamente e você como um desenvolvedor profissional, você verá isso. Normalmente, você cria uma pasta dentro do aplicativo chamada fixtures. E aí dentro você vai ter um novo arquivo, e então, você sabe, isso vai ser lojas, não Jason. Então aqui, vamos colocar todos os objetos do Jason. E aqui, você vê, há 23 lojas em. Eles vão salvar isso. E, em seguida, a próxima coisa é ir para o teste em si e adicionar essa funcionalidade. Então nós vamos para o teste, e então nós vamos dizer, hum de importação de aplicativos, uh, acessórios. Ok, então vamos ver como usamos Thea as fotos neste teste que vamos fazer para a paginação para criar esse método e ele vai ser chamado de teste, hum, hum, paginação da loja. E então nós vamos fazer o A p I criado e gerar token de acesso e ver como estamos fazendo agora os recursos do aplicativo. Então nós estamos achando que DVs um nome de banco de dados automático que está aqui, todo o caminho no topo, e nós vamos ter a coleção é uma loja, e então o acessório é e você pode apenas ah, uh, colocar o caminho a partir da loja de armazenamento de nível superior. O Jason. Então, a partir deste ponto, depois de executarmos este comando, tudo o que é todas essas lojas estarão disponíveis para nós para testes em, então para executar testes em. Então é uma grande economia de tempo. E é, você sabe, liberá-lo para criar agora teste que vai estar testando a paginação. Então vamos escrever isso. Então primeiro eu vou fazer eu tenho lojas antigas para que eu não ficar com cabeçalhos no tipo de conteúdo, e então eu vou afirmar que a metade próxima nos dados RV Por que eu sei que eu faz vai Tem que estar lá porque eu tenho mais de uma página e assim há seria uma boa você sabe, eu estou testando corretamente a, hum, a paginação lá, então os próximos testes seria obter a segunda página, então eu vou passar página igual a dois após os cabeçalhos e o conteúdo tipo. E então eu deveria ter anterior no é os dados RV também. É a próxima, porque estou no meio dessa paginação. Então, Então, espalhe. É basicamente isso. Quero dizer, você pode inventar outros testes. Acho que isto é muito bom. Então vamos dizer isso. E, finalmente, precisamos adicionar nosso novo teste aqui no teste. Então vamos dizer a partir de testes de loja, teste de importação loja. Ok, finalmente, precisamos fazer o teste, então certifique-se de que você tem seus, hum, hum, seus contêineres na frente. Vou fazê-lo aqui mesmo na janela do banco de dados de mangá. Então eu vou dizer Docker exatamente traço Eu não olhei para a docker ps o quê? Que um docker ps Então é animais de estimação ap I Web Ron 18 e então eu vou dizer por telefone três testes p y perfeito. Então que correr bem, notado que temos um conectado a mongo DB e, em seguida, ele diz, importado 23 objetos. Isso é da importação mongol, um ah, comando. Mas como você pode ver, você sabe, nós fazemos todos os testes e tudo parece OK. Então isso é definido para lojas. E a próxima peça em que vamos trabalhar é o ponto final dos animais de estimação. 28. CRUD de ponta de ponta de OS de ponta de OS de: Agora que temos o ponto final das lojas,não vamos voltar aos animais de estimação e apontar. Agora que temos o ponto final das lojas, E como você pode se lembrar, foi um teste muito parecido com a memória. Tipo de, Ah, lista que tínhamos lá, e nós não vamos torná-lo um tipo adequado de como apostas endpoint com o modelo de banco e testes e tudo mais. Então vamos começar a trabalhar nisso. Ok? Então você pode ver aqui nós temos os animais de estimação, FBI como está hoje, e , você sabe, é uma lista de objetos e entrar no posto. Estamos manipulando essa lista. E, claro, não gostaríamos de fazer isso antes de chegarmos lá . Hum, ali. Então você sabe que essa visão B y realmente vai funcionar bem. A única coisa que eu vou mudar aqui é em vez de ser um fim aqui, lembre-se que nós vamos ter umID externo um como as lojas. Externalidade. Então vamos fazer isso? Hum, nenhum residente, mas eu vejo apenas um parâmetro simples que vai ser como um tipo de força. Então essa é a única mudança que vamos fazer nas vistas. E antes de trabalhar no A P, na verdade,vamos montar os modelos que vamos usar aqui. E antes de trabalhar no A P, na verdade,vamos verdade, Então, vamos usar o seguinte modelo de banco de dados tão importante do aplicativo. Vamos usar os modelos da loja aqui porque temos uma chave estrangeira, mas o modelo da cama vai ter no exterior, como uma espécie de nome. Uma raça e idade da loja em que o animal de estimação está localizado, teremos um preço. Uma raça e idade da loja em que o animal de estimação está localizado, A menos que você possa dizer que é um campo decimal. Teremos um ouro vendido, que significa que se for verdade que já foi vendido, teremos uma data recebida, que é a data em que a aposta entrou na loja. Teremos uma data de venda, que é a data em que o animal de estimação foi vendido e eles vão ter um ouro de vida, o que é como temos visto. Essa é uma espécie de nossa operação de exclusão vai afetar isso, mas não vamos apagar nenhum animal de estimação. A outra coisa está nos índices. Eu tenho mais nos seis índices aqui porque eu vou fazer algumas pesquisas que vão ser mais um pouco mais complexas. O 1º 1 terá uma ideia externa na vida que será aplicável. Quando eu estiver procurando por um animal específico, então eu vou ter uma espécie e vida, que é que vamos usar quando procurarmos por uma espécie específica. Onda. Na verdade, agora que eu penso nisso, nós também vamos precisar de raça aqui neste índice porque eu vou estar procurando por ah, você sabe, espécies. É como cão ou gato e raça é tipo que tipo de cão, como, como, é um multi Zohra Sheets que, hum e eu íamos fazer, tipo, tipo, pesquisas em todo o animal de estimação que eu baseio Ah, usando esses dois campos. E finalmente vamos ter uma loja, porque vamos procurar, dê-me os animais de estimação que esta loja tem. Então essas são as modelos dela, e isso parece bom. Então vamos começar a trabalhar no A P I então há, ah, alguma vantagem que vamos usar aqui. Teremos Jason Schema para o esquema de validação. Vamos usar-te. Eu fui para o Xterra. Senhora em linha. Vamos usar o Jason também durante o dia. Nós também vamos usar, um, um, o esquema de apostas outro que vamos construir e um modelo de animal de estimação neste e este um p i e nós também vamos usar os modelos da loja quando devolvermos os detalhes do animal de estimação. Nós vamos basicamente, hum, você sabe, imprimir a loja. Hum, então é isso. Vamos começar a trabalhar no real, hum, vamos ver aqui na classe real de Perry p I, e a primeira coisa que vamos definir é um método innit. Então nós vamos ter, hum, os animais de estimação por página, assim como a paginação que tivemos nas lojas e rodas indo para verificar se o método de solicitação não é igual a obter. E o pedido que Jason está, hum , não está definido. Então estaremos a bordo sem 400. E eu realmente quero acrescentar isso porque, hum, se a pista está sendo passada, nós não passamos um pedido, Jason, também. Então, e acho que vimos isso também. Então, vamos realmente fazer o seguinte método de solicitação. Não é obter e método de solicitação não é excluir. E não precisamos pedir ao Jason do que 400 pobres. Ok, então vamos trabalhar no animal de estimação, hum, para chegar aqui. Então vamos fazer o seguinte. Então eu vou tirar isso, e eu vou dizer que se uma luz está sendo passada, então pet é igual a objetos de aposta que filtro externo pago eu d igual a má idéia e picles de vida . Verdadeiro. Retornou o primeiro objeto. Se houver uma batida, então retorne a resposta, que será um resultado, ok? E então o objeto que vamos definir neste modelo que vamos trabalhar em um pouco, hum, em seguida, finalmente retornou o responsável 200 caso contrário retornou um 400. Ok, um, deixe-me também colocar a passagem aqui para que saibamos que vamos trabalhar neste depois. E vamos começar a trabalhar no nesses modelos. Então a primeira coisa em que vamos trabalhar é a chave da tese. Pode ser por isso, para os animais de estimação e isto é o que parece. Hum, vai ser um tipo de nome de objeto vai ser suspeito de cordas, criador de cordas. A idade da cadeia é um número e, em seguida, armazenar é uma cadeia de preços uma cadeia de caracteres. E por que os preços string outro número porque tem decimais e Jason lidando com decimais. É um pouco complicado porque acho que a coisa mais próxima que usaríamos seria flutuar. Mas float tem, você sabe, não são apenas duas casas decimais. É um monte deles, então pode ficar complicado. Então eu decidi usar Price como uma string. Então lembre-se que quando você estiver passando ou postando o ponto final, finalmente eu vou ter uma data recebida, e isso vai ter um padrão fora da data da alma que tínhamos usado no passado. Ah, que é, você sabe, o ano, mês, dia, e então a hora, que é hora, minuto, segundo, e, em seguida, o Z, que é UTC. Hum, e finalmente eu vou fazer todos os campos necessários. Então esse é o esquema para os modelos. Eu vou usar o seguinte vai ter, um este é modelo B y modelos ser o porquê, e este é o lugar onde vamos fazer lá. Nós vamos ter o, uh nós não somos importante objeto loja porque você vai ver que nós vamos usar a loja aqui no nós vamos devolver a loja como parte do modelo. Então, o melhor é apenas ir devolver o i. D. O nome, a espécie, a raça, a idade, a loja como um objeto de história. E isso é uma coisa muito legal. Estamos aproveitando a ótica da loja que temos aqui. Então, você sabe, nós não estamos repetindo tudo isso, e nós queremos quando? Quando estamos devolvendo um animal de estimação. Nós queremos. Ah, volte. Que loja? Doutor? A aposta está dentro. Hum, eu não tenho a data recebida, que nós vamos fazer. Eu é o formato O dele. os Semossegundos. E então a seção de links, que terá o eu e, finalmente, o objeto de animais será o arranjado que está sendo passado quando fizermos o não obter o estimação individual, mas o, uh, todos os animais de estimação para que a loja. Hum, bem, não para aquela loja por isso, para esse ponto final. 29. Testes de de de animais de a final, POSde e poste: Ok, vamos continuar a trabalhar no A P que ouvi. E, uh, então eu vou fazer agora não o animal de estimação individual, mas o se você está recebendo todos os animais de estimação. Então nós não temos mais, hum, nós vamos ter animais mais velhos que estão ao vivo, e nós estamos em troca a paginação usando uma página. E finalmente temos o resultado. Certo, com os links na página específica, e vamos passar as apostas. Objetivo se a paginação de animais de estimação tem anterior do que anexamos esse link toe o h ar h, ref. E se tiver um próximo, então nós acrescentamos. E se tiver um próximo, Isso é bom, então nada que não tenhamos visto antes. Isso é muito semelhante às lojas e ponto. Hum e é isso. Então agora vamos Ah, vamos trabalhar no post. Totalmente não substituir começando aqui. E então nós vamos ter, uh, apostas. Jason é o pedido, Jason. Então vamos verificar se o validador passou do esquema. Se houver algum erro do que você retornar nossa mensagem, então nós buscamos a loja. Nós vamos passar o externo como o animal de estimação oposto para ver se eu quero voltar para uma loja específica. Se esta história não for encontrada, então retornaremos, armazenados, não encontrados. Então vamos testar que os oito recebidos. Na verdade, é um bom encontro. E fazemos isso usando uma tentativa, exceto se esse exceto se essemétodo chamado string. Hum, tempo P, que é o observador no tempo, uh , não, você sabe, erro fora? Então está tudo bem. Mas se não acontecer, é uma data inválida. Finalmente, criamos o objeto animal de estimação, e aqui vamos ter o externo i d o que vamos criar. Ah, esse momento teria o nome espécie raça preço de loja idade e recebeu oito. E vamos salvar esse objeto e finalmente devolveremos o objeto de estimação. um 21, Comum 21,o que significa que o objeto foi criado corretamente. coloquei Não, isso duas vezes, então nos livramos disso. Hum, legal. Então eu acho que podemos ir em frente e fazer um par de testes aqui antes de fazer o put e elite. Então aqui temos nosso carteiro e, hum, você sabe, antes de sair, tipo , jogar com o com o post e ponto para os animais de estimação, vamos em frente e verificar se ele está aberto correndo e está correndo. E eu tenho um presente que eu, tipo, coloquei um animal de estimação nesta primeira loja. Então eu sei. Eu noto o eu d ah, aqui. E então eu vou me vangloriar pelo correio. Eles começam o início do velho tipo de teste que fizemos no início do curso, certo? Então eles não são Ah, eles não são como trabalhar corretamente. Mas vamos ver se conseguimos fazer isto. Então, tenha o ponto final do post. Vão ser animais de estimação locais. Acho que não temos o cabeçalho, então precisamos pegar os cabeçalhos, e o corpo definitivamente não está certo. Então eu acabei de inventar um objeto onde você pode ir em frente e testar com. Então é só o meu cão de verdade, Mac. Ele diz que ela, hum, o H é na verdade 11. Ah, ele é uma loja. Este é um preço que acabei de inventar. Mas para mim, claro, ele é muito mais valioso do que isso. Ah, então, hum, eu preciso deixar isso por enquanto. Eu preciso pegar a ficha aqui para isso. Então vamos ter o X para cima. I d X Uh uh, A pequena bile e, em seguida, x token é esse valor lá. Então vamos em frente e salvar isso. Então nós temos o corpo deles, nós temos os cabeçalhos, então tudo parece bom. Hum, e vamos em frente e fazer um post sobre. Vamos ver se isso está funcionando aqui. Sim, está correndo. Então poste Ah, temos um erro. Penn não está definido. Veja se posso checar o pacote ou o arquivo que está jogando isso fora. Ok, então eu acho que eu não tenho quero dizer importação de modelos de animais de estimação. Importar animal de estimação, , hoje Strange. Oh, porque era Deus. Estava aqui antes, e acho que acabei de substituí-la de modelos de animais de estimação. Importação de Aposta. Certo, vamos tentar de novo. Perfeito. Então criamos nosso animal de estimação. Você pode ver os detalhes aqui. Então nós temos. É uma raça H acelerada. I d. Os links é o nome de animal de estimação individual. Mac Price data de recebimento. O encontro chegou perfeitamente bem. E veja como estamos passando. Isto é um encontro lá, mas isto é muito complicado, porque estamos mesmo a passar isto. Isto é uma corda e o que estamos a fazer no P.I . É que estamos a usar isto. Ah, uma string, hum, dia dia dia dia padrão string tempo que converte um padrão conhecido para um específico, hum, string em um objeto diurno. E isso é o que estamos economizando no banco de dados. E então, quando ele voltar, estamos convertendo isso para, ah, ah, corda usando o gelo. Então, formatar. Então, parece muito simples, mas na verdade é uma configuração muito legal. E você pode usar isso para seus olhos AP agora para obter um, na verdade, na verdade, ah, quero dizer, nós poderíamos obter o i d. aqui. Nós vamos ter que, como, também copiar e colar o up. Então isso é para este grande Vamos fazer com que eles obtenham todos os endpoint. Então veja se isso funciona. Então pegue todos os animais e aponte Uh, nós temos o token, mas eu posso não ser o mais recente café e encarar isso só por precaução. Oh, foi. Foi uma boa, muito boa. Então, se dissemos para enviar, aqui está, pegamos todos os animais de estimação. E, claro, não há muitos deles, mas é a base de ST Pat igual a um, e ele está retornando Mac como o único objeto lá. Então, está tudo funcionando. - Tudo bem. Agora vamos pegar um animal de estimação e apontar. Isso definitivamente precisa de muito trabalho. Então eu acho que eu copiei o Max I D. E vamos pegar os cabeçalhos. Então precisamos do X. Uh, ser móvel X toke e não falar. Hum, e vamos copiar isso. Espere, esse é o que é o símbolo. E a ideia de que talvez me enganasse. Onde está o Max? Eu seria este aqui, está bem? Baseado Iniciando aqui e salve este Enviar. Perfeito. Então nós temos Max Object aqui e lá vai você. Reparem que estamos, sabe, recebendo os detalhes da loja aqui,o que é muito bom. É assim que o gelo da AP deve funcionar como você não deveria. Reparem que estamos, sabe, recebendo os detalhes da loja aqui, Estás a dizer que a loja e identificação , devias devias ajudar a escalar com toda a informação. Se é um objeto grande como a loja tem um monte de objetos fora lá, então definitivamente você poderia potencialmente apenas passar idéia, talvez alguns detalhes chave, e então ter o declínio obter todos os detalhes para a loja, mas porque não é um objeto grande, eu acho que é bom que você incorporar outros objetos dentro do retorno Jason que você está dando de volta para o cliente. Perfeito. Então agora precisamos trabalhar a pé e tarde, então vamos em frente e trabalhar nisso. 30. Animais de a postagem e exclusão: Ok, nós vamos trabalhar agora no set e elite, e isso é muito parecido com o que fizemos nas lojas, e na verdade é semelhante ao post. Então eu estou indo em frente e passo isso do repo. Temos queprocurar o animal de estimação baseado no animal de estimação, procurar o animal de estimação baseado no animal de estimação e se não encontrarmos a cama, devolveremos o 44 depois ligamos para Pat, Jason, Toby, Jason. E nós vamos passar pelo validador para isso para aquele objeto Jason. E se houver algum erro, voltará para 400. Depois procuramos a loja com base na cadeia da loja, e se não encontrarmos a loja ,devolvemos 400. Depois procuramos a loja com base na cadeia da loja, e se não encontrarmos a loja , E finalmente tentamos a data no DSI que é ah, é uma validação. Se todas essas coisas forem, bem, então nós apenas definimos as diferentes propriedades. Espécies principais raça preço loja idade e receber data, dedo do pé do animal de estimação e, em seguida, salvar o objeto. Finalmente, onde voltamos, um resultado fora. Está bem. E então o objeto da cama é o passado com a aposta de que o líder vai ser algo parecido. Então pegamos o animal de estimação do exterior como o Andi. Se a cama não é fundador, voltaria para quatro. Se acontecer, se for encontrado. E dissemos que a vida na cama deles, dedo falso, guarde isso e devolva uma ferramenta para então aqueles são os colocados na liderança. Então vamos tentar isso na aplicação. Ok, então nós vamos testar essas coisas agora em carteiros, e nós temos uma colocação aqui, mas eu provavelmente vou apenas, hum Sim, vamos pegar o objeto do ponto final do post em seu corpo ano Vá. E então o que nós vamos fazer aqui é, uh, uh, atualizar Max falar com Max H 2 12 Então ele é um ano mais velho, e nós precisamos atualizar que, hum, o animal de estimação que eu d. Guettel aposta e aponte aqui. E opa, copiei a coisa toda. O i d. Lá vai você. E guardou isso por enquanto. E, finalmente, precisamos adicionar os cabeçalhos. Então vamos ver o token aqui e x para cima. É mais vil e aceito token. Isto está bem. Parece que está tudo bem lá. Então vamos guardar isso. E incrível. Nós saímos. 200. Ok, vamos ver a idade. Ele tem 12 anos agora. Onde está H.O.H. é o 1º 1, então o registro foi atualizado corretamente. Onde está H.O.H. H.O.H. Temos 200. Ok, então isso parece bom. E se obtivermos o ponto final específico, você vê que a idade lá diz 11%. Agora você vê, a idade é 12. Incrível. Então, agora vamos fazer a elite. Vamos copiar o que eu estaria aqui, e vamos pegar os cabeçalhos X para cima. Vamos copiar o que eu estaria aqui, I d é móvel X até token. E é bom que daqui. Incrível. Então é tudo o que precisamos. Vamos guardar isso. Então nós temos isso e enviar perfeito. Temos uma ferramenta quatro. O que significa que o servidor apagou isso. Essa aposta se tentarmos pegar o Mac Now, aqui temos um Ford quatro não encontrado, que é o comportamento deles. Nós queremos que nós queremos. Incrível. Então terminamos com a multidão. Criamos, lemos, lemos, atualizamos e excluímos. E agora vamos em frente e fazer alguns testes para a cama 31. Testes de animais: Então terminamos com os pontos finais do Krug. E agora nós vamos fazer os animais de estimação, um, testes para isso para aquela parte do sistema A P I. Vou passar por isso rapidamente, porque é a maioria das coisas que vimos no FBI da loja. No entanto, há algumas coisas que eu vou te mostrar. Uma é, hum nós vamos ter acessórios para os animais de estimação e as lojas misturando um teste. Hum, e eu realmente adicionei idéias para o jogo. Então certifique-se de verificar o repo para o para as lojas luminárias porque agora eles têm uma idéia no início. E assim eu posso. Em seguida, os acessórios de animais de estimação podem abordar ou ah, fazer um campo de referência. Duas lojas que estão naquele arquivo do Jason, um, armazena acessórios. Então vamos começar. Ok, então vamos adicionar o arquivo de testes aqui, e eu vou passar rapidamente por isso, como eu disse, porque é muito parecido com o teste da loja. Então nós vamos ter as diferentes bibliotecas incluídas. , É aí que são as configurações,os modelos que precisamos e eso aqui. Teremos a aula de testes de animais. Vamos criar um aplicativo com essas configurações baseadas. E ah, nós também vamos ter a configuração com a fábrica de aplicativos e uma demolição que vai ter os que estão baseados sendo descartados. Eu também vou criar um dicionário ab, que vai ser frio sempre que quisermos criar um novo aplicativo um dicionário armazenado, que é uma espécie de loja fictícia que estamos criando aqui. E, finalmente, finalmente, vamos ter um dicionário de animais de estimação, que vamos ter, um, um, com algum tipo de caldeirão como, uh,objeto de uh, estimação. Ah, e novamente, como podemos ver, eu tenho o, uh, meu cachorro Mac, lá dentro. Hum, então nós vamos ter um método, hum, ajudante mítico. Criar um aplicativo p i, que vai Ah, basicamente postar muito grande um aplicativo com com o endpoint apse. E então nós também vamos ter um token de acesso de geração. Ajudante. Essa roda gerou acesso falando e disse que pediu o auto-token para o para a classe a partir desse ponto, hum, eu também tenho os cabeçalhos, e finalmente, podemos começar a fazer alguns testes. Então as primeiras coisas que precisamos fazer aqui, ele é lamentar o aplicativo A p i e, em seguida, gerar o token de acesso. Gerar nossa primeira loja. E então, finalmente, vamos testar a criação de um, uh, uh, um animal de estimação. Este é o primeiro teste que estamos fazendo aqui. Então vamos postar no endpoint de animais com cabeçalhos, o dicionário traseiro que temos e o animal de estimação que eu d vai ser armazenado neste viável e vamos afirmar que temos uma ferramenta. Há muitas coisas lá. Uma coisa que é um pouco diferente aqui que eu não sei se você notou é que no dicionário da cama? Na verdade, estou me referindo a auto-história então você pensaria, tipo, por que isso funciona? Ainda nem montamos a história D até esse ponto. Bem, as coisas que quando configuramos ou definimos o método auxiliar, não estamos realmente chamando isso. Só estamos definindo. Então isso é um tipo de viável que vai ser definido mais tarde. E na verdade, quando chamamos isso, nós já criamos uma loja e eu estou armazenando isso nessa história de auto. Seja para que quando eu chamei o Dicionário Self Back que, hum que viável existe e e e que possa correr bem, então esse é um pequeno truque que vocês podem usar. E, uh, você sabe, nós vamos estar usando isso neste caso, eso Não, vamos passar pelos testes mais antigos, que é obter, editar e excluir. Então, para levantar-se, vamos fazer, ah, ah, vamos chegar ao ponto final para animais de estimação. Além disso, paguei com os cabeçalhos e devíamos sair. Código de status desligado 200 para edição. Vou criar um umnovo objeto que é uma aposta completamente diferente. E eu vou basicamente atingir o ponto final com aquele animal de estimação i d. e eu vou verificar se o status Cody é 200 e que, uh, a espécie animal de estimação foi atualizada para ser gato. E finalmente, eu estou indo para obter a elite um animal de estimação que está atingindo esse mesmo ponto final com excluir e que tinha eu d. E eu estou afirmando que o código de status é para um quatro e que a contagem para animais de estimação que têm a vida é igual a bandeira falsa é dito a um. Então isso é um conjunto bastante abrangente, você sabe, teste para a multidão. Parte disso. Uhm eu estou indo para agora ir em frente e ah, no teste no teste B Y. Então eu vou aqui e eu vou dizer de testes BET importação de animais de estimação teste, e isso vai, então, incluir isso lá dentro. Hum, isso é, uh isso é um bom começo. Vamos testar a paginação com o com o com os acessórios, mas acho que podemos fazer este teste agora e ver o que acontece. Então, para executar o teste, vamos ter certeza de que nossas continuidades estão funcionando e verificamos qual é o nome do contêiner da docker . Ah, parece que são animais de estimação ap. Eu fui um. Então eu vou dizer docker exceto Dash I t, uh, uh, animais de estimação um p i Web um e, em seguida, por telefone. Três testes: Por quê? Ok, então vamos em frente e correr isso perfeito. Então aqui eu vejo que os acessórios para as lojas com foi executado. É por isso que temos 23 objetos importados. Mas os testes estão funcionando bem. Então isso é um bom começo. Então vamos em frente agora e tentar configurar os acessórios para testar a paginação 32. Tests de Paginação de de os de de de a: assim a testa e criar os acessórios aqui na aposta. Então vamos criar uma nova pasta chamada Fixtures. E dentro dessa pasta, teremos um arquivo chamado Pets que Jason e Ah, vejam. Então eu vou copiar isso do repositório em Aqui você vai. Então nós temos Ah, nós temos 15 tapinhas, e muitos deles são Ah, você pode ver aqui que eles têm um, um e eu d já sendo definido, bem como um externo como o e, ah, um monte deles pertencia à mesma loja. Então você vê, aqui está o B oito c no final, com exceção dos últimos três. E isso é porque eu quero testar a paginação nas lojas também. Quando chegarmos ao ponto em que estamos paginando vacinando através de animais de estimação que estão em uma loja específica para que você possa pegar isso. É o Jason do relatório do GET, pessoas que estão ligadas no, hum no curso. Então é isso. Então agora vamos fazer a segunda parte do teste, que vai ser a peça de paginação, então vamos começar com isso. Então vamos em frente e testar a função de paginação lá. Então vamos dizer teste de paginação. Primeiro vamos começar a funcionar, evamos importar os dois acessórios, aslojas e o animal de estimação, e agora vamos pegar os animais mais velhos. Primeiro vamos começar a funcionar, e vamos importar os dois acessórios, as lojas e o animal de estimação, E nós só precisamos pegar o, hum, hum, ponto final dos animais de estimação e verificar o próximo virado para lá. E então também temos a segunda página de animais de estimação e vamos verificar se a página anterior está lá também. Então é isso que é basicamente isso. São todos os testes de paginação que tenho. E eu acho que é ah, é uma boa cobertura de teste de texto lá. Então vamos em frente e tentar executar isso. E então vamos limpar a tela aqui e executar Python três testes. Perfeito. Então tudo corre perfeitamente notar aqui que temos agora os 15 animais de estimação sendo importados e as 23 lojas em, um no segundo dispositivo que no segundo teste que estamos executando. Então é isso. Hum, nós temos nossos animais de estimação, mas totalmente testados , então Ah, estamos praticamente quase Ah, o fim. Hum, mas nós temos Ah, um par de lições agora. Queremos passar 33. Obtenha todos os animais em um de a de uma loja: Ok, então as próximas duas lições serão sobre funcionalidade de busca para R A P I. O primeiro que vamos fazer é colocar todos os animais de estimação em uma loja. E o 2º 1, que será a próxima lição, é olhar através é olhar através dos animais de estimação mais velhos usando filtros para, tipo, a raça e a espécie. dos animais de estimação mais velhos usando filtros para, tipo, Então vamos ver como fazemos isso. Então nós queremos obter um endpoint chamado loja história D animais para obter todos os animais de estimação naquela loja . Então, para fazer isso, vamos ter um novo endpoint, e vamos chamá-lo de o seguinte código. Se uma loja na sua história da loja, os animais de estimação e nós vamos conseguir isso usando um método get, um, do FBI. Tão legal. Até agora, tudo bem. Então nós vamos, hum, seguida nós vamos trabalhar no A P I em si. Então vamos guardar isso. E nós vamos adicionar um par fora bibliotecas aqui quando eu digo de modelos gordos importar animais de estimação e de modelos de animais de estimação importar animais de estimação para cima. Hum, eu também vou ter uma espécie de como a mesma, uh, constante aqui. Vou dizer que os animais de estimação por página serão 10. Então o que vamos fazer é ter paginação no, hum, hum, no ponto final real. Hum, e, uh, nós vamos, hum, metade. Se houver mais de 10 animais de estimação naquela loja específica, teremos o anterior próximo tipo de pontos finais. anterior próximo anterior próximo tipo de pontos finais. Então a próxima coisa que vamos fazer é modificar o animal de estimação, um, en pointe, e vamos ter um código a seguir. Faça e diga, se animais de estimação está na solicitação, seu URL, então vamos obter os objetos fora dos animais de estimação que estão na loja e, em seguida, definir a página viável e obter a paginação dele. E então a resposta será um resultado. Ok? Com os links fora do ah, aquela página de animais e o, hum, o objeto real da loja embutido lá dentro. Se tivermos pré-visualizações e isto é como se já tivesses visto isto antes,vamos escrever uma página anterior no ponto final, e também vamos verificar se tem a seguir. Se tivermos pré-visualizações e isto é como se já tivesses visto isto antes, vamos escrever uma página anterior no ponto final, Então nós vamos ter o, uh o link nos upended. Bem, ok, então isso é se os animais de estimação estão no pedido que seu URL então nós vamos dizer o contrário. , Se for isso,não está no ponto final. Então vamos ter apenas a resposta para o para o objeto da loja. E, uh e então nós apenas devolvemos o objeto de volta para o ponto final. Então essa é a modificação para a história, P I Agora também precisamos fazer algumas mudanças nos modelos de animais de estimação. Então, a idéia aqui, isso é uma coisa nova que estamos inserindo aqui é agora que vamos passar por um apartamento chamado Nenhuma loja é igual a verdade. Qual é a ideia? A ideia de que eu tinha se nenhuma história fosse verdade, então não vamos ter sobre os modelos de animais de estimação. Uh, bem aqui. Nós não vamos ter o link da loja, uh, enviado para lá porque vai ser. Não faz muita coisa sensível. Ah, se estamos procurando os animais de estimação em uma loja específica para ter todos os animais de estimação lá com a loja repetida uma e outra vez. Então o que nós vamos fazer é que nós vamos ter que a peça da loja para ser opcional, e ele só vai ser exibido se eles souberem, bandeira da loja A disse muito verdade. Então vamos ver como fazemos isso. Então nós vamos ter, hum a loja de notas bandeira é igual a cai aqui, e isso é um padrão. E lembre-se, em funções python quando você, um quando você passa um perímetro com um valor padrão, isso significa que você pode passá-lo ou você não tem que passá-lo. Hum, então isso é um tipo de um nd opcional um parâmetro nocional. E o que eu vou fazer aqui é eu vou tirar isso e eu vou dizer, em vez de dias de retorno, eu vou dizer aposta objeto é igual a isso. Ok, hum, e então eu vou dizer, se não sabe loja. Então eu vou dizer um objeto de estimação fora um pouco. Objeto. Oh, loja vai ser objeto de loja fora da loja Pat Dot. Está bem. E finalmente, eu vou devolver o objeto de estimação, e eu também preciso ter a bandeira de “nenhuma loja “aqui porque lembre-se, disfunção pode ser chamada, hum, do tipo de modelo individual, mas também poderia ser chamado do Se eu conseguir uma lista de animais de estimação, eu quero ser capaz de fazer isso também. Então aqui vou dizer que os animais de estimação se opõem. Um objeto de caneta, Bad Kama, sem loja. E a forma como passei aquela bandeira para o objeto de estimação, a função. Então é isso. E eu acho que isso é tudo o que precisamos fazer para o Mas precisamos fazer uma pequena alteração no nos modelos da loja também. Então são os modelos da loja. Então o que eu vou fazer aqui não vai, hum, hum, em um ponto final de estimação o novo ponto final do pé o comprimento para que possamos ah, você sabe, observar. Ei, faz e ah expôs os possíveis links que temos. Então eu vou chamar esses animais de estimação de Rehl. Então? Então precisamos pegar os animais de estimação. E então eu vou dizer barras lojas de barra por cento perguntar que vai ser uma barra de cordas animais e, em seguida, porcentagem. Ah, guarde isso externo. Eu fico bem. Então agora vamos ter que ligar um. Vai ser este eu e lá vai ser o trilho de animais, que é dizer ao cliente, ou a propósito, se você quiser colocar os boxes nesta loja, você só precisa fazer isso de animais de estimação no indivíduo. Ah, loja legal. Então vamos tentar isso e ver como funciona. 34. Teste o de de obter todos os animais em um de de de loja de de em: Ok, então agora eu quero tentar obter os animais de estimação em uma loja específica. E para isso eu quero explodi-lo os acessórios usando este dispositivo Ah, função que eu tenho na aplicação p y e carregar até lojas mais antigas, bem como um animal de estimação. Então este ah, acessórios que você confinou no repositório abaixo que eu estou apontando em cada lição. E o bom é que os acessórios têm para simples as lojas têm um i d. na aposta. Eu tenho o link externo para as lojas usando a idéia fundando aqui. Então você tem ah, muito bom set off dados para brincar. Então você não precisa, tipo, tipo, construir isso a partir de francês. Então, a maneira como vamos fazer isso é abrir, e você se certificar de que seus contêineres de encaixe estejam em execução e abra uma nova guia. E nessa parte de cima, vamos tentar obter o, hum, ver o por telefone, me gerenciar. Por que shell e importar que as luminárias funcionam aqui que temos para que para o teste e usá-lo para carregar nossos dados ou. Então eu vou dizer docker ex SEC. I t, uh animais de estimação ap I Web um por telefone três gerenciado B y shell. Então eu estou chamando o gerente de mim. Por quê? Usando Python 3 dentro do contêiner, mas estou interagindo com ele da concha da minha outra concha de odor. Então veja, você tem essas três setas pequenas lá. Isso significa que estamos na concha e estamos prontos para ir. A primeira coisa que vou fazer é apagar os dados existentes que temos para que tenhamos, você sabe, tudo limpo do zero. Então eu vou dizer da loja modelos importar, uh, loja. E eu vou dizer que modelos importam pet e eles querem dizer óptica loja loja. Oh, a elite. E eu quero um animal de estimação objetos seguros, toda a elite, e eles não vão dizer a partir de acessórios de importação aplicativo. Isso são acessórios ou fixou os acessórios dela? Ok. E então eu vou dizer, um, acessórios. Temos que passar o banco de dados Earp. que Temosquepassar a coleção, que é a loja, e depois o parente, então a foto arquivada em relação à petopia. Então seria neste caso para o para a loja seria acessórios de loja, lojas, Jason, acessórios de loja, lojas, Jason, hum, hum, e que importou os 23 objetos Lá. Hum, deixe-me limpar esta tela, e então eu vou dizer que acessórios se encaixam em um p I, uh, pet. E depois dois acessórios. Fatos que Jason. Oh, é ruim? Aposta? Sim, seu animal de estimação. Correto. Incrível. Então agora importamos esses 15 objetos e as lojas também. E vamos verificar se temos as lojas montadas tão corretamente, então eu vou pegar todas as lojas e perfeito, eu tenho você sabe, página um olha esta página também, que significa, você sabe, Ele carregou mais de, hum 10 que é um tênis de crença, o número de fonte. E deixe-me pegar todos os animais de estimação para ver se isso funciona também. E ainda assim temos um monte de morcegos lá dentro com lojas diferentes. Então agora vou testar o que acabamos de fazer. Agora, que é obter os animais de estimação em uma loja individual. Hum, eu pré-carregei aqui. Eu tenho ah loja eu d. Esse é o primeiro 1 que tem mais de 10 animais de estimação que eu queria dedo do pé. Verifique também a paginação assim ainda enviado. E como você pode ver aqui, está funcionando perfeitamente bem. Eu tenho todos os animais de estimação que estão naquela loja e ah, parece muito bom. E temos uma ferramenta de página. Então, se passarmos aqui ponto de interrogação página é igual a dois. Temos a segunda página. Tão perfeito. Agora você vê como isso está funcionando. E, hum, você sabe, é ah, é uma abordagem muito boa para obter objetos que estão dentro de um outro objeto de uma forma relacionada . 35. Pesquise Pesquisar de animais com filtros: quando vem funcionalidade que estamos agora encontramos em olhos AP é a capacidade dedo filtro através de objetos usando algum tipo off como parâmetro no comandante no seu olho onde você veio, por exemplo, no nosso caso que dizem temos o ponto final de apostas Guettel. Em vez de ver todos os animais de estimação em todas as lojas, talvez eu queira ver apenas os cães, certo? Em vez de ver todos os animais de estimação em todas as lojas, talvez eu queira ver apenas os cães, Seria um caso de uso muito comum. Certo? Então, Então, o que eu gostaria de fazer é dizer algo como um ponto de interrogação e, em seguida, colocar, hum, espécies iguais a escuras, por exemplo, e ter a capacidade de filtrar através Todos os animais de estimação e ponto , mas só mostrando que os cães e a mesma coisa. Se eu quisesse filtrar ainda mais, eu poderia fazer algo como e criar iguais. Ah, Sheets iria, digamos certo então eu seria Eles estariam recebendo todos os lençóis mais velhos que cães em todas as lojas de animais porque, você sabe, se um comum para Charlie seria Oh, Eu quero pegar um lençol e eu quero ver em que lojas eles vendem esse tipo de cão. Então é isso que vamos fazer agora, e não é muito complicado. Na verdade, é uma solução muito escalável que vamos usar. Então vamos em frente e modificar o endpoint PR do animal de estimação. Então deixe-me parar aqui de perto. E então a única coisa que vamos ter que vamos precisar que não temos agora é você ver como temos todos esses animais como o árbitro H e o tem prévias. Isso é o próximo. Precisamos modificar isso porque vamos ter filtro. Então, se você seria meio estranho fazer Se o parâmetro Eu quero filtro é espécie, então envie este link e se não e então isso faria muito sentido. estranho fazer Se o parâmetro Eu quero filtro é espécie, Então o que vamos fazer é vamos ter um tipo de modelo fora que vamos inserir aqui, que vai ser pet h r H ref. E então nós vamos dizer página de animais e, em seguida, por cento s, que vai ser um basicamente que o ritmo que a pessoa está dizendo, mas nós vamos ser capazes de, em seguida, adicionar dinamicamente a que H ref com base nos filtros sob que o usuário é olhos solicitando. Então aqui vamos fazer o seguinte. Então, em baixo do filtro real aqui, nós vamos fazer lá seguindo ele vai ter se espécies, em argumentos de solicitação, nós vamos filtrar pela espécie e na dor que h ref esse argumento de solicitação no A mesma coisa. Se temos raça nos argumentos do pedido, então você pode filtrar isso usando o então você pode filtrar isso usando oargumento do pedido e adicionar isso ao rifle do papagaio. Agora, uma coisa legal sobre o uso de consultas no ou EMS é que você pode filtrar ainda mais. Então, por exemplo, se tivéssemos espécies e então criássemos minorias que estamos modificando a consulta de animais duas vezes e tudo bem. O que é isso o que isso vai fazer é que vamos ter animais de estimação inicialmente vai ser filtrado por espécie, certo? Então, por exemplo, temos um cão ou cães. Hum, então quando? Se temos uma raça também lá, este animal de estimação está fazendo referência a este animais já filtrados por cão. Então você está fazendo um segundo filtro, que é perfeito, é exatamente o que queremos fazer. Mas se por alguns você sabe, se o usuário está passando apenas corajoso, por exemplo, raça é igual a porcaria. Então, sem passar a espécie, isso funciona também. Porque esses animais de estimação, então, estaria referindo todos os animais como os, hum os objetos de estimação mais velhos que temos aqui, certo? A vida é igual a verdadeira. E agora nós estaríamos apenas, tipo, filtrando com com ótimo, que não faz muito sentido. Se você estivesse procurando por ela também. Eu diria que você também passaria por espécies, mas não estamos limitando isso. E os filtros na natureza devem ser assim dinâmicos. Então eu estou apenas como, postando que será o caso aqui. Ok, então a próxima coisa que vamos fazer é atualizar estes h árbitro. Hum, viável é dizer, o seguinte vai ser agora mau árbitro e depois página percentual. E assim teremos que usar o novo modelo para os seus olhos que estamos encontrando aqui. Então, a mesma coisa aqui. E finalmente o que está aqui. Incrível. Então é isso. Então vamos dizer isso e vamos tentar. Então agora, se eu fizer animais de estimação em seguida, verifique se isso está funcionando. Então isso parece bom. E o que você vê que o template ing ou eles são um treff viável está funcionando bem lá dentro. Hum, mas agora vamos em frente e procurar apenas cães. Então nós vamos fazer ah, espécie é igual a cão e notar que eu estou fazendo ah, maiúsculas ou maiúsculas no D porque é assim que ele é armazenado no, hum, nos objetos de dados que podemos massa que, Sabe, com minúsculas. Mas precisaríamos salvar todos os objetos para ter esse, hum, nem casos. Bem, vamos escrever isso. E perfeito. Agora eu vejo que o A apostas traiçoeiras Ph um e espécie igual preso, que é a corrente uma deriva. E agora você vê que eu só tenho ... docas aqui, o que é muito legal. E isso parece estar funcionando bem. E depois vamos verificar o outro filtro, que é a raça. Certo? Então vamos fazer e procriar igual a Ah, Merda. Sue e depois mande. Ok. Perfeito. Então eles viajam agora reflete que é um espaço físico começando a reprodução folha igual. E agora só tenho um cão, que é o meu cão, Mac. Hum, tão perfeito. Então é isso. É assim que podemos fazer filtros. E você pode pensar em configurar filtros para, como, as lojas, por exemplo. Você quer obter as lojas em um bairro específico ou código de sentar. Sabe, o céu é o limite. Que trabalho incrível. 36. Conclusão: Ok, então é isso. Chegamos à conclusão fora do curso. Espero que você tenha aprendido um pouco sobre os fundamentos do FBI descanso completo O que significa ser um descanso ful, um p i e como toe usou as visões globais do frasco para fazer plataformas AP I muito simples e muito escaláveis . Agora, claro, esse é o próximo passo. Eu vou recomendar que você dê uma olhada em algumas das bibliotecas A P I lá fora. Acho que o mais popular é um frasco de descanso. E, ah, você sabe, eu poderia talvez fazer, ah, ah, vídeo do YouTube. Certifique-se de conferir o meu canal de vídeo do YouTube com um tutorial sobre ele. Mas eu acho que é melhor assim aprender como construir o em uma plataforma P I a partir de, como zero sem usar qualquer uma dessas bibliotecas, porque então você começa a apreciar o que acontece nos bastidores e exatamente por que as bibliotecas são fazendo as coisas que eles estão fazendo. Então, muito obrigado por completar o curso, e veremos no próximo