Diseño profesional de RESTful API con Python Flask | Jorge Escobar | Skillshare
Menú
Buscar

Velocidad de reproducción


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

Diseño profesional de RESTful API con Python Flask

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

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción 1.1

      1:07

    • 2.

      Introducción 1.2

      1:09

    • 3.

      Definiciones de API

      10:39

    • 4.

      Interfaz de irde

      13:21

    • 5.

      Configurar entorno principal

      2:24

    • 6.

      Estructura de contenedores básica

      7:30

    • 7.

      Cómo ejecutar los contenedores

      4:50

    • 8.

      Vistas Pluggable

      12:22

    • 9.

      Instalación y uso de Postman

      7:03

    • 10.

      Nuestro primer POSPOST

      9:10

    • 11.

      Códigos de estado de HTTP

      8:53

    • 12.

      Un verdadero CRUD

      9:21

    • 13.

      PONer y DELETE

      12:03

    • 14.

      Autenticaciones simples

      6:55

    • 15.

      Prueba de nuestra simple autenticación

      7:16

    • 16.

      Modelo de la API de token y de Token de API

      14:22

    • 17.

      Vistas de la API y decorador de tode

      6:07

    • 18.

      Instala bcrypt y tode prueba

      14:00

    • 19.

      Construir las pruebas de la aplicación

      7:42

    • 20.

      Pruebas de Token

      4:48

    • 21.

      Comenzar el punto de tienda

      3:24

    • 22.

      La biblioteca de esquemas de JSON

      8:42

    • 23.

      El archivo de API de tienda

      6:34

    • 24.

      Prueba de punto de End de la tienda

      8:17

    • 25.

      Implementar PUT y DELETE

      10:38

    • 26.

      Implementar la paginación en Get Todas las marcas

      7:52

    • 27.

      Pruebas de tienda

      11:42

    • 28.

      CRUD de que Endpoint con mascotas

      9:34

    • 29.

      Terminar de GET, de masa, de POST y de caricatura

      10:15

    • 30.

      Masones y DELETE

      4:52

    • 31.

      Pruebas de mascotas

      7:45

    • 32.

      Pruebas de pago de la paginación

      3:13

    • 33.

      Consigue todas las mascotas en un endpoint de la tienda

      8:52

    • 34.

      Prueba todas las mascotas en un endpoint de tienda

      5:27

    • 35.

      Busca mascotas con filtros

      7:22

    • 36.

      Conclusión

      1:18

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

563

Estudiantes

1

Proyecto

Acerca de esta clase

Este curso te enseñará cómo construir una plataforma de API profesional con la que de la pura a la de Flask, sin que los estudiantes puedan aprender los fundamentos del diseño de API RESTos.

En el mundo de hoy, dominado en las interfaces de usuarios de JavaScript y las aplicaciones móviles, la habilidad de crear una API scalable bien arquitectón, es clave de que pueda complementar esas aplicaciones y asegurar que los clientes y servidores se interfaces con las interfaces adecuadas.

El curso cubre los conceptos básicos del patrón de API RESTful y luego se entra de detalle y paso a la construcción de una plataforma de API que cubrirá las seis restricciones de la arquitectura. Los estudiantes aprenderán el estándar de la industria y seguirán las mejores prácticas para las arquitectones de la calidad.

Si ya conoces los fundamentos de Flask y te interesa cómo diseñar, diseñar y construir una plataforma de Flask este es el curso para ti.

El curso está dividido en 2 secciones:

  • Introducción que cubre todos los conceptos necesarios para comprender lo que es una API RESTful y sus seis restricciones

  • Una explicación paso a paso de crear una API de la tienda de mascotas que incluirá una capa de autenticación, un endpoint de la tienda y un endpoint de mascotas y de las funciones de búsqueda

El curso tiene más de 5 tutoriales de video, y el código de video al de cada sección al final de cada sección, para que puedas seguir el proceso de codificación de codificación.

El curso puede llevar en 3 a 10 días en función de la cantidad de material que el estudiante completa

Además, estamos mejorando constantemente con contenido gracias a los comentarios de nuestros estudiantes.

Acompaña a este curso y sigue tu camino de convertirte en un desarrollador de backend profesional.

¿Cuáles son los requisitos?

  • Una computadora con acceso de Internet y acceso administrativo para instalar paquetes
  • Buena comprensión de cómo usar la interfaz de línea de comando, en Internet y de editores de código
  • Un gran conocimiento del marco de Flask

¿Qué provecho voy a sacar de este curso?

  • Aprenderás los conceptos fundamentales para el diseño de plataformas de la API RESTful
  • Te introducirá a las restricciones de API RESTful
  • Aprenderás a configurar una capa de autenticación
  • Aprenderás cómo construir de manera de de crear puntos de API de forma

¿A qué audiencia está dirigido?

  • Programadores y desarrolladores con conocimientos básicos de Flask que quieren aprender a diseñar y construir plataformas de API profesionales
  • architects de aplicaciones que quieren comprender mejor cómo construir aplicaciones de API
  • CTOs de de Startup que quieren entender mejores prácticas para el diseño de la API
  • Estudiantes de la ciencia de la computadora que quieren expuestos a los conceptos de la vida real

Conoce a tu profesor(a)

Teacher Profile Image

Jorge Escobar

Technologist, entrepreneur and open source fanatic

Profesor(a)

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... Ver perfil completo

Habilidades relacionadas

Desarrollo Lenguajes de programación Python
Level: Intermediate

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introducción 1.1: hola y bienvenidos al descanso profesional. Will AP I diseño usando pisos de FIFA. Me gustaría que no AP ice son la capa de interacción entre su base de datos en sus clientes. No obstante, no es tan sencillo construir un buen FBI que sean cierto concepto fundamental que debes entender . De eso se trata este curso. Empezaremos con una teoría y el concepto necesario para que entiendas qué buena dama receta. Debí haber pasado en detalle cubriendo la partícula, y luego pasamos a codificar realmente desde cero y sin usar ningún descanso para biblioteca . Una plataforma AP I robusta que aprovechará esos conceptos fundamentales y los pondrá en práctica. AP I especie de la pieza de conocimiento más importante que un desarrollador de aplicaciones de respaldo moderno necesita tener en su bolsillo y este curso ahí en caso de que aprendas de la manera correcta cómo firmar con éxito el arquitecto y codificar un pecho conforme estándar plato. Aquí. Nos vemos dentro 2. Introducción 1.2: superior. Bienvenido al descanso profesional ful ap. Diseño usando matraz de bisonte. ¿ Qué queremos lograr en este curso? Bueno, queremos construir una aplicación AP de descanso ful desde cero. Eso sigue los estándares de la industria. Primero vamos a ver la teoría detrás de cómo es el arrestable FBI. Y luego vamos a codificar cama por cama y un paso a paso, una aplicación de matraz que tiene todos los estándares de la industria off en un P. Yo atiendo uno de los prerrequisitos que necesitas conocer. Fundamentos de Python on. Deberías conocer matraz. Introducción y avance. Como saben, tengo dos buenos cursos. Uno para introducción al matraz por el otro, un curso de aplicación de matraz más profesional. ¿ Qué necesitas para completar el curso? Es necesario tener un equipo que tenga instalado el último cliente docker. Y vamos a instalar ese servicio docker mongo db como nuestra base de datos y por supuesto, matraz. Entonces empecemos el viaje 3. Definiciones de API: Hola y bienvenidos al descanso profesional ful AP I diseño usando matraz. Mi nombre es Jorge Escobar y seré tu instructor en este nuevo emocionante curso donde vamos a explorar cómo construir eficientemente sobre servicios A p I diseñados profesionalmente para cualquier cosa que necesites en un P I cuatro puede ser para alimentar una plataforma que quieres que otras personas sean, um, algo así como interactuar con. O quieres tener gente para, ah, consumir eso a ah, través de una aplicación móvil, que es un caso de uso muy común para AP ICE hoy en día. Entonces, empecemos. Um, entonces, ¿qué es una P? Es decir así AP I significa interfaz de programación de aplicaciones, y es un conjunto de rutinas, protocolos y herramientas para construir interacciones entre clientes y servidores. Y lo que esto significa es que estás creando una capa fuera de la comunicación entre tu aplicación, tu plataforma y algo por ahí que está consumiendo los datos e interactuando con ellos. De hecho, puedes tener un FBI que está justo sólo donde solo estás dando. Esa es una información meteorológica para las personas que quieren conseguir, ya sea por su por sus ubicaciones específicas, o puedes hacer como una lectura, Escribe una p I. Donde tienes un ya sabes, aplicación social donde te están creando usuarios y estás leyendo y escribiendo posts y cosas por el estilo. Entonces siempre es este concepto de tener que separar entidades a un cliente en un servidor que están hablando a través de esto a través de esta capa a través de esta Ah, um especificación o forma especificada de comunicación que se llama un P I. Entonces, uh, ¿qué es el descanso? El descanso es sinónimo de representación. Transferencia estatal representacional. Necesito networked hyper media estilo arquitectónico. Caracterizado, por cierto, lo que significa que digamos que tienes en un P I, y tal vez pueda tener cualquier forma. Pero cuando dices arresto completo FBI, la connotación que hay es que estás usando el enfoque de estilo Web es poder servir ese contenido, para poder interactuar con esos clientes, y vamos a ver un poco apagado más información sobre eso. Pero lo clave aquí es que piensas en los objetos o en los datos. Ahí estaba tu regreso como si fueran páginas Web con algunos meta datos para, como, siguiente en página anterior y cosas así, y además necesitas pensar en la forma en que interactúas. El cliente rastrea con su plataforma está usando verbos HDP. Entonces consigue post, que hemos visto en otros cursos de flus. Y luego tenemos otros como put y elite, que no son tan comunes a menos que estés empezando a trabajar en unos ojos A P. Um, así que echemos un vistazo a lo que las seis constriñe ap extranjero rest ful. A lo mejor parezco así que tienes que tener una interfaz uniforme. Tiene que ser apátrida. Tiene que estar de moda. Tiene dedo del pie conformarse a declinar patrón de servidor. Tiene que ser un sistema en capas en opcionalmente. Da abrigo al hombre. Entonces vamos a ver cada uno de estos con algún detalle. El 1er 1 que es única interfaz extranjera. Te voy a explicar en un en A en una segunda lección, porque creo que es un corazón de descanso Will FBI. Entonces quiero, como, entrar en detalle en ese. Entonces iremos allí en un segundo. Entonces el siguiente es ah, apátrida. Entonces, ¿qué significan los apátridas? Significa que el resto Ah ah, solicita que le estás dando a la a tu plataforma son básicamente instancias aisladas con las que no tienen una sesión con el dedo del pie o no saben qué pasó antes o qué va a pasar, Ya sabes, después, y no le gusta, puedes identificar que esas solicitudes diciendo, Oh, Oh, este es el usuario X Y C Stateless significa que cada vez que haces una solicitud, todo lo que necesitas servir o para básicamente cumplir esa solicitud necesita ser incrustado en que usted conoce, solicitudes salientes o entrantes. Y luego vas a proporcionar de vuelta en base a esos parámetros los datos que esa solicitud está necesitando donde estamos requiriendo, para que esto signifique que cada solicitud individual es que es una nueva entidad propia. Y no sabe nada de, ya sabes, sabes, pasado de características o lo que ha pasado hasta ahora en términos de la, um del del flujo de trabajo eso que apátrida atrapable. Eso es algo así como puedes más o menos pensar en cobrar, que es, ya sabes, ya sabes, algo así como almacenar copias estáticas fuera de solicitud. Esto está relacionado con eso y lo que descansar ful AP ICE debe confirmar es que debes decir declinado. Eso es solicitar tu contenido. Si pueden cobrar o no cobrar el responsive, dándoles para que, um puedas tener una plataforma más escalable. Y esto es algo así como relacionado con digamos, si tienes miles de peticiones,ya sabes, ya sabes, por segundo pero podrías notar declinación, por ejemplo, ejemplo, que Sam solicitando a John esos, ya sabes, perfil. Um, ese perfil no está cambiando todo el tiempo. Para que puedas decirle al cliente cuando regreses la información del perfil. Oye, ya sabes, puedes cobrar esta solicitud o tienda que rictus solicita localmente, digamos, un día para digamos, que eso disminuya el número de baja solicitud que estás obteniendo de esa subida porque tal vez otro usuario está solicitando lo mismo. Ya sabes, John, esos perfiles y no tienes que regenerar y recalentar la base de datos y todo eso. Puedes dejar que el cliente decida que sabes que pueden. Ellos pueden cobrar esa información y la forma en que le das esta información al cliente es básicamente a través del control de efectivo. HDB hizo un encabezado de datos. Y como puedes ver en ese ejemplo, estás diciendo que max H es igual a 1 20 que es como segundo. Entonces esto significa que la solicitud que te estoy devolviendo o la respuesta. Te estoy devolviendo puedes almacenar de forma segura durante dos minutos. Y no va a haber cambios mientras tanto. Entonces, ya sabes, ten confianza en que puedes, ya sabes, no tienes que, como, solicitar como, esta información de vuelta en un plazo de 120 segundos. Um, así que ahí siguiente, um, vaya extraños servidor cliente. Entonces los clientes siempre significan que, um, hay una separación entre la supresión de preocupaciones entre el cliente y el servidor, que significa que el cliente no sabe lo que el, um uh lo que el servidores tipo de como configurados. Es como, ¿qué base de datos están usando o qué? Um, ¿qué es eso? El estructura de los datos que no pueden pensar que es algo así como completamente separados de la misma manera el servidor no está interesado o no tiene que saber que el cliente es un iPhone six s o un teléfono Android o un sistema automatizado que está consiguiendo información. Algo así como un tipo de cosa de firehose de Twitter. El servidor es no sabe nada sobre el cliente. Y cada vez que entre la solicitud, sólo te va a gustar por ciento de información basada en la solicitud de vuelta al cliente. Entonces, ya sabes que no eres como preocupación por cómo se ve el cliente. Um, la siguiente restricción es el sistema de capas. Y esto es hablar, ya sabes, un cliente no puede decir cuáles son las capas o cuál es el conjunto de detrás de la solicitud que les estás dando. Y esto esto puede como permitirte hacer, como,balanceo de como, carga y tener múltiples servidores de aplicaciones, o incluso tener servidores de efectivo de prepara que estén sirviendo versiones en caché fuera de la información? El cliente no sabe eso. Entonces, por ejemplo, en esto en esta gráfica, se puede ver que hay como, ya sabes, la nube es Internet, y luego la caja negra del lado izquierdo es un cliente, y, ya sabes, es como hacer una solicitud más antigua al servidor. El servidor es los libros negros de la derecha, y luego el servidor tiene una base de datos que puede ser como servir esas solicitudes o puede estar sirviendo esas solicitudes a través de como dije ya capa Scotch. Por lo que realmente no importa cómo presentas esa información de vuelta, y eso te da la capacidad de escalar tu plataforma A P I sin romper, ya sabes, algo así como las graciosas restricciones AP I. Entonces, um, el último y éste es opcional. Y para ser honesto, no se usa. Ah, mucho. Se llama al hombre y se llama a El hombre es básicamente tú sabes cómo como antes, ya sabes, en la Web, como tal vez hace unos años había como applets de Java y las mascotas de Java eran como autocontenidos poco programas que estaban ejecutando su en su navegador. Y él era como un poco tal vez un pequeño reloj o un reloj, ya sabes, o un jueguito o significado alma de juego, el a P. lucharé un B I, um um spec le dice a la gente que pueden, ya sabes, proporcionar no solo objetos de datos, sino que también pueden proporcionar fragmentos de código. Y pude ver esto, como ser como, hoy en día, tal vez un flash, una aplicación mini flash o algo así. Pero no es muy usado. Y este país constreñir, realidad no es como algo que vas a usar a menudo. Um, entonces eso es eso para las,ya sabes, ya sabes, las cinco limitaciones de abajo. Entonces te voy a hablar de la interfaz de uniformes en el siguiente menos y así quedate por ahí 4. Interfaz de irde: bienvenido de nuevo. Entonces vamos a seguir mirando las, uh, las restricciones, y vamos a ver la restricción de interfaz uniforme, que siento que es la más importante. Entonces vamos a ver cómo se ve eso. Por lo que la interfaz uniformada se divide en cuatro partes. Uno es basado en recursos. El segundo es la manipulación de recurso es a través de representaciones. El tercer año de mensajes autodescriptivos y el cuarto es hipermedia como el motor fuera aplicación, estado u odio debe. Entonces vamos a pasar por cada uno de esos. Por lo que para el recurso basado, esto es básicamente cada recurso se identifica. Usando te estás levantando como el recurso identifica. Entonces a lo que este tipo de como traducir es que las acciones que vas a realizar o las solicitadas que vas a hacer están ordenadas o son Tener un A Cherokee y estructura a través de tu ojo. Y tus ojos, tal vez recuerdes, es la parte del euro del euro que no tiene el H dos b lo que sea. Cualquiera que sea el servidor dot com parte. Entonces sacas eso la primera tajada y adelante, eso es que tú o yo, um, y um, eso es va a estar descontando qué tipo de solicitudes o qué estás solicitando? Y vas a diseñar tu A P I usando esos tus l's o tus ojos como estructura . Entonces veamos un ejemplo. Por ejemplo, si golpeo a p i slash b one slash border Así que esa es una nueva tu I. Pero lo que estás viendo aquí es que estás odiando la sección A P I de la página web. Estás odiando la versión uno de la A P, y podría haber tenido. Ya sabes, hombre, es versiones múltiples. Y ahora estás vendiendo diciéndole al AP o quieres sacar una lista de los pedidos. Entonces como puedes ver aquí, hay algunos que sabes, es como una llave aquí, y hay una estructuración su que la a p que está definiendo a través de una buena, um, estructurando fuera del fuera de tu ojo que vas a utilizar para solicitar información. Pero veamos otro ejemplo. Entonces éste es ahora estoy mirando a un P I. V uno ordena 15 44. Entonces, como se podría imaginar, 15 44 es una orden i d. Entonces lo que estás diciendo aquí es que me den el detalle de este desorden solo. Esto más de 15 44. Y como puedes empezar a ver, ahí hay una estructura. Si recibes órdenes, solo vas a conseguir probablemente una lista de todas las órdenes que incluso golpean órdenes. 50 44. Vas a conseguir sólo los detalles de ese de ese orden tan elegantes y profesionalmente ser ojos se configuran de esa manera. Tú eres y la forma en que me gusta Piénsalo. ¿ Eso son órdenes? ¿ Está arriba el matraz? En tanto que tenemos, ya sabes, las órdenes de carpeta y luego dentro tienes modelos de uso, pruebas, etcétera que deberían más o menos coincidir con la primera parte de eso, tú o yo, y luego el 2do 1 es más como un como un me d como , ya sabes, es Es una especie de vista. Ah, nuestro controlador se apaga situación donde estás o si estás pasando que yo d entonces simplemente regresé que yo d Así que vamos a ver estas cosas en la práctica cuando empecemos a trabajar en nuestro FBI. Entonces, um, lo único en lo que necesitas pensar también en esto en esta corriente golfo de la restricción de recursos es que son recurso Es que tu, um, que estás enviando al cliente son separado de la de las representaciones o de la estructura que el ese recurso tiene dentro de tu A P I. Entonces, por ejemplo, cuando solicitas órdenes y y, sabes sin el i d, eres no se va a conseguir como una consulta van a conseguir, como todos los similares, los campos que están en la base de datos, vas a obtener alguna información de estructura y que por lo general tiene una, um, una estructura que se define dependiendo de cómo se ve el cliente. Si es, ah, es una computadora si es una aplicación móvil o lo que necesitaban específicamente. Entonces, por ejemplo, podrías devolver html XML o Jason. Entonces pero lo que hay que pensar aquí es que no sólo vas a, como volcar, ya sabes, toda la consulta cuando te dieron las órdenes o son todos estos campos más antiguos. Pero te va a gustar, ya sabes, devolver algo esa estructura y que vas a estar definiendo en tu en tu definición a p I . Entonces el 2do 1 es la manipulación de recursos a través de la representación, y dicen que este tipo de como está empatado con cómo los clientes van a preguntar qué tipo de representaciones, Um van a ser echados de vuelta a ellos o devueltos con base en el en el encabezado http excepto que están enviando. Entonces, por ejemplo, un cliente que es una aplicación móvil podría decir, Hey, necesito los pedidos 15. 44 Pero lo quiero en formato Jason tu A P. Debería ser lo suficientemente inteligente como para leer eso excepto encabezado http que te están enviando y devuelven la información en el formato que están preguntando dónde nos tal vez como ah, Web o una aplicación basada en navegador o cliente podría estar solicitando html. Y vas a saber retroceso en lugar de las órdenes en un Jason Foreman, tal vez, ah, fragmento de html con el con los diferentes campos fuera de ese orden en formato HTML. Por lo que eres un P. Necesito ser lo suficientemente flexible para acomodar y y tirar hacia atrás o devolver información o datos usando el thea los datos que el cliente está solicitando. Um así el 3er 1 es mensajes autodescriptivos, y lo que éstos conlleva es que el, um, la solicitud en sí se representan a través del verbo HDP que declinó es preguntar. Y pasamos por un poquito de estos cursos de matraz propietario, que son, ya sabes, las peticiones de get. Recuerda que cuando haces una solicitud de get, envías todos los campos en el real También tienes, como, como, un signo de interrogación. Ya sabes, uh, uh, nombre de campo es igual a los datos de la sensación. Yo estoy por ciento. Eso dijo Muy bien, eso es otra vez petición. tanto que un post era más como dentro del cuerpo fuera de la petición http que estabas enviando , sabes que los campos reales que estabas, um, estabas um, publicando dedo del pie, dedo del pie del servidor, ¿ verdad? Bueno, en un mundo p I get post put y elite son en realidad, son lo que llamamos la multitud que crea leer, actualizar y la operación de plomo. Entonces Gadd significa que voy a enviar una solicitud para conseguir algo del FBI. Si envío un post, significa que estoy creando un nuevo registro. Y estoy enviando que los datos para eso, para el registro en el post, ya sabes, carga útil de datos del puerto de solicitud H dos B es un ah, uno que no hemos usado mucho y no usas normalmente como en Web , Pero puede ser, como usted utiliza, que es otra actualización. Entonces no estás creando un nuevo registro. Pero básicamente estás diciendo actualizar este registro estos ordenan con esta nueva información que es a tiene una nueva ya sabes, factura total o quieres modificar los artículos dentro de ese pedido. Por lo que usas put para hacer el eso. Esa actualización sobre el plomo, que es un verbo http real, es como sabes, no le dijiste a Torrey que hace referencia. Se quiere el registro de líder, y, por supuesto, necesita tener la autenticación adecuada, y se tiene que tener la autorización del pie de los registros en vivo. Pero si lo estás, si estás implementando eso y tienes la autenticación adecuada de lo que eres capaz eliminar registros. Entonces eso son mensajes autodescriptivos. Y el último es hipermedia como el motor fuera de aplicación estado u odio ALS, que es un tipo raro de palabra similar. Pero, ¿qué significa esto? Cuando leí esto, estaba un poco confundido y no podía entender de qué estaban hablando. Pero es en pocas palabras. Lo que esto es, es que tu a p i Si es detenible a p I. Necesita actuar como una página web en el sentido de que puedes enviar no sólo cuando recibas las órdenes conoces una solicitud. No solo estás volteando los pedidos al cliente, sino que también estás poniendo algunos enlaces importantes que dicen que hay un total de 1500 pedidos. Esta es la página número uno. Y si quieres mirar la siguiente página, este es el euro al que necesitas pegarle. Por lo que imagina que cuando tú cuando golpeas órdenes, pesar de que estamos devolviendo información de Jason, que es lo que vamos a usar reutilizando mayormente piénsalo no solo tiene datos, sino piénsalo como si fuera una aplicación. Es una página web. Y tienes como una mesa donde ves el orden como volcadura. Pero son sólo los primeros 10 resultados, y tienen, como, como, un siguiente anterior en la parte inferior. Y también tienes, como, como, algún tipo de como, tal vez apuesta pan miga en la parte superior. Entonces eso es lo que hey hace significa es que eres un B. Debería decir como usar hipermedios en enlaces principales y cosas así a algo así , Dile al cliente A que , estoy aquí, pero también puedes hacer estas cosas. O si quieres actualizar el saldo, puedes hacer esta operación, etcétera. Entonces vamos a ver. Algo así como un ejemplo de eso. Um, así que aquí tenemos un, um un get request para conseguir el número de cuenta 12345 Así que la línea superior es algo así como lo que el cliente envió al FBI y al HDP 11 200. De acuerdo, es lo que está regresando el FBI. Y como puedes ver ahí tienes, como, como, ya sabes, el número de cuenta, tienes la divisa del saldo, y podrías parar ahí. Se podría decir, OK, eso es todo. Pero ya que lo estás haciendo hey, ¿tu también tener este enlace Rehl, que es un real, como HDP válido, ya sabes, o el etiquetado extremo. Y tú dices Si quieres que lo pase, puedes hacer un conteo. 12345 corta el pasarlo. Si quieres retirarte, ya sabes, y obtienes la idea. Eres como ayudar al cliente a tomar decisiones quizá, y eso incluye transferir o cerrar en la cuenta. Pero hay otra capa a esto. Entonces digamos, por ejemplo, que ahora el ah, esto a condados está sobrecargado. Y como se puede ver en la balanza en la moneda oh, están en el campo de balance, ¿ves eso? Es menos 25. Entonces el a P que escucho debería ser lo suficientemente inteligente como para decir: Espera un minuto. Entonces la única acción que la persona puede hacer aquí es depositar como significado. Consigue esta cuenta de vuelta a, como, positivo, Correcto. Pero no deberían poder retirarse. No deberían poder transferir, o no deberían poder cerrar esta cuenta. Entonces, ya sabes, las grandes líneas es lo que nos va a gustar hacer desaparecer. Y esto es lo que vas a conseguir si ellos los saldos de la cuenta es negativo. Entonces esto es hey, hace bien ahí está como, No solo estás regresando datos, también eres como reaccionar a los datos que te gusta usar para que tu, um, um, tu cliente sea capaz de hacer que el decisiones correctas, y eres como algo así como guiar hilo, guiarlos por los canales adecuados. Um, entonces eso es eso. Eso es que todo lo que sé hay mucho miedo aquí, y desafortunadamente, debo luchar antes. ¿ Simplemente les doy a los alumnos un tipo de conceptos como estos a medida que avanzamos? Pero creo que incluso si no lo conseguiste todo, está bien. Podrás revisar esto más adelante cuando hayas hecho el curso. O tal vez, ya sabes, revisarlo. Ah, en un momento posterior. Pero esto te dará algo así como una muy buena. Um um, ya sabes, mantén fuera. Qué profesional. Bueno, el resto de letreros se verá el FBI. Entonces empecemos a cortejar nuestra solicitud del FBI. 5. Configurar entorno principal: bienvenido de nuevo. Entonces en esta lección, vamos a empezar a configurar nuestro entorno básico. Y como mencioné, vamos a usar Docker, el médico cliente para Mac o Windows. Y si tienes una máquina de sábanas, entonces puedes usar el sistema Docker o biblioteca para los límites. Pero supongo que la mayoría de nosotros vamos a estar trabajando en el cliente docker para Windows o Mac on. No hay que conocer al Dr. a detalle. Voy a ir paso a paso. Lo único que necesitas dedo del pie hacer de antemano siempre descarga el doctor subió, um, para tu para tu máquina. Y si quieres saber más sobre docker y aprender más cómo el dedo del pie se hartó tu archivo docker y ya sabes, Docker componer. Tengo un curso que puedes checar. Pero mientras tanto, solo, ya sabes, empecemos ya sabes, a hacer cosas que a paso y simplemente sigan adelante, y así empecemos. De acuerdo, entonces lo primero que quieres hacer es ir a docker dot com y empezar con Docker aquí. Y después de eso, vas a conseguir un médico de descarga para Mac. Um, si estás en un Mac, claro Y si te desplazas hacia abajo, también hay un médico para Windows. A pesar de que deben posicionarse en el sistema operativo que usted tiene. Pero de cualquier manera descargues eso. Y después de eso, vas a conseguir el pequeño Docker Aiken, Um, Um, y seguir sólo las, ya sabes, las instalaciones de configuración después de haber descargado al cliente Docker, um, y tú lo ejecutamos. Deberían ver a esta ballena ahí. Y debería decir, Dockery está corriendo ahora. Una cosa y esto lo mencioné en el en mi curso deberías tener el volumen de intercambio de archivos que vas a usar para tu aplicación aquí. En mi caso, sabes que me gustaría trabajar en la carpeta O. P. T. P. T. Ah. Por lo que tengo o p t Ahí. Y si no ves el ya conoces al padre ahí, igual que pulsa Plus y luego ve a la carpeta que quieres agregar y ah, y luego, ya sabes, aplicar y reiniciar va a gustar, ya sabes, sólo apaga y vuelve de nuevo. Así que asegúrate de que tengas eso comprobado 6. Estructura de contenedores básica: en esta lección. Vamos a configurar nuestra configuración de contenedor base usando el archivo docker. Vamos a escribir un acoplador, componer CMO, y también vamos a tener la fábrica de aplicaciones para la aplicación de carne. Entonces vamos a cubrirnos rápidamente a través de esto. Esto lo hemos visto montado en otros cursos, así que no deberíamos estar viendo nada nuevo. Entonces sigamos adelante y hagamos eso, acuerdo? Aquí estamos en nuestra terminal, vamos a ir a la carpeta O. P. P. T, y ahora mismo, no tengo nada ahí dentro. Entonces voy a crear mi carpeta, y voy a llamar a esta mascota Dash a p I. Así que ahora mejor tenemos que estar yo ahí. Vamos a ver el a ello y despejar esta gran crema con Vamos, K y s. Así que empecemos desde el principio, supongo. Ah, los requisitos. Txt. Entonces para que yo haga eso, voy a empezar mi editor Adam. Y aquí estoy ah, mascotas. Ap I Así cuando hago cualquier archivo y lo llamo requisitos txt y ah, Requisito 60 tiene todas estas bibliotecas. Algunos de los que has visto, vamos a usar matraz tu 11 guión plano encontrar Mongo, matraz de motor Mongo, motor mongo y luego por cripta B y Jason Scheme es el que no hemos visto antes. Pero es ah, es una biblioteca de validación de Jason muy útil que vamos a estar usando. Ahora, recuerda, necesitas poner todos estos números exactos y y bibliotecas en este orden para ah que puedas seguir a lo largo del curso. De lo contrario verás pequeños problemas aquí y allá y ah, y fuera de curso. Si publicas alguna pregunta respecto ya sabes, alguna biblioteca y no estas siguiendo este requisito 60 no voy a poder ayudarte . Entonces esos son nuestros requisitos. Txt. Lo siguiente que vamos a hacer es una velocidad de ajuste. ¿ Por qué? Y vamos a tener ah, llave secreta. Depuración es igual a true. Y vamos a usar a Munger para ser anfitrión y mongo db Devi. Eso es ah para Flashman. Ve a ser Y aquí necesitamos estar usando Munger TB. Pregúntale al anfitrión. Entonces eso es eso. Sigamos adelante ahora y creemos un manage b y, que usamos con, uh, el guión de carne. Y otra vez, nada demasiado complicado. Aquí. Dijimos que ruta donde está el archivo, luego importamos Monier y servidor desde script plano crear una app. Esto es como el método de fábrica o patrón de fábrica. Y luego nosotros en el servidor drone comando, que va a funcionar en 4 5000 Y finalmente, ejecutamos la aplicación. Si es si si se está ejecutando desde el desde la terminal. Entonces, um, hasta ahora tan bueno. Ahora, vamos a crear una cuota de solicitud Y, y esto va a verse como lo siguiente. Vamos a importar matraz y motor mongo, y entonces sabemos que empezamos a ser nosotros Un viable para el motor mongol. Instancia, vamos a tener un create up, um, um, aplicación de fábrica de aplicaciones, uh, configurando con la configuración B y y permitiendo las sobreescrituras desde la prueba comenzando ahí d ser . Y luego solo vamos a planos importantes desde las vistas de casa. Vamos a tener una app para el hogar y luego registramos ese plano. Ahora, nota algo aquí. Um, creo que en el repositorio, tengo una versión ligeramente diferente de esto. Creo que dice matraz. Dottie Exterior motor mongo. Pero comenzando con matraz, creo que Cyril 10 o 11 que cambió a, um para ser usado como este matraz en la partitura. Motor Mongo. Funcionará al revés, pero creo que vas a recibir algunas advertencias de deprecación. Ahora, vamos a seguir adelante y crear la carpeta de inicio y vamos a tener AAA, ¿no? Archivo. Son para que sea, um, considere un paquete python. Entonces en ella no sea por qué pusimos nada en ese expediente. Y luego vamos a tener unas vistas p y aquí. Y vamos a tener lo siguiente en ese expediente. Cuando nuestro plano de importación, vamos a registrar ese plano. Y iban a decir que en esa ruta, vamos a imprimir Hola, mundo. Esto es así aún, ya sabes, sabemos que el contenedor está funcionando correctamente. De acuerdo, ya casi terminamos. Vamos a crear el archivo docker y el archivo médico. Entonces me voy a quedar así. Entonces vamos a tener una imagen base con 3.4 slim. Vamos a ejecutar y apt, obtener actualización e instalar estas bibliotecas. Después hacemos un directorio local en el contenedor y dijimos que eso pidió el directorio de trabajo, y luego copiamos todo el código que tenemos aquí. Corre peeping puesto y empieza a escuchar 5000 cuando iniciamos el contenedor. Y finalmente emitimos el mando por 13 minutos. Servidor B y ro, que es Theo el ya sabes, el endpoint de script de matraz. Entonces eso es casi todo. Lo último es que el doctor compuso piano. Entonces necesitamos que el acosador compuso el e m o.Y esto es lo que ponemos ahí dentro. Versión dos servicios web con estos volúmenes instalados. Ahora, recuerda, esos volúmenes necesitan ser los mismos que el que tienes en tu computadora local. Um, Y luego vamos a tener un DB, que es sacado de la imagen Mongol 302 Y vamos a llamar a ese contenedor. Betsy P I d. ser uno y la Web container pets ap I Web one. Um, y esto tiene que ser esto, como tu directorio local. Entonces en mi caso, es, um, um, esta carpeta aquí ups opt apuestas, un p yo, y eso debería coincidir con esa de ahí. Y luego localmente, vamos a tener eso ahí dentro. Entonces eso es todo. Eso es todo lo que necesitamos para configurar nuestro contenedor inicial. Entonces sigamos adelante y ah, y construyamos este contenedor 7. Cómo ejecutar los contenedores: bienvenido de nuevo. Entonces en la última lección, configuramos nuestro contenedor docker básico que va a tener tanto un contenedor de aplicaciones como un contenedor de base de datos. Y ahora vamos a probar la construcción de este contenedor y ver si todo está funcionando correctamente. Entonces, empecemos. De acuerdo, entonces lo primero que vamos a hacer es que vamos a tener Vamos a ponernos en la O P T. . Ah, carpeta del FBI de apuesta o cualquier carpeta que decidieras que ibas a usar y asegúrate tener tu archivo de composición docker ahí dentro. Además, asegúrate de tener DACA funcionando. Creo que no lo estoy ejecutando aquí, así que lo voy a empezar y debería tomar un par de segundos y uno estudios arriba. Entonces vamos a usar lo siguiente. Vamos a decir docker, componer, construir y qué? Eso lo va a hacer. Se va a ah, mira la composición docker. Um oh, que tenemos aquí y construimos esas imágenes para o las, ya sabes, imágenes de contenedor de las que entonces vamos a poder huir. Entonces hagámoslo. Entonces ahora se está consiguiendo todas las, um básicamente las bibliotecas que se describen en el archivo docker para la carpeta de aplicación para la Web . De acuerdo, ahora se está ejecutando los requisitos. Txt perfecto. Entonces ahora es Ah, está construido e los contenedores. Y ahora vamos a, um básicamente copiar la no copia. Mal el, uh, manganeso ser servidor por separado del Observador. Y la razón de eso es que cuando tenemos que reiniciar el servidor de aplicaciones porque hemos hecho algunos errores o necesitamos, como, una actualización dura el código no tenemos dedo del pie, ya sabes, derribar todo los contenedores portuarios encendidos, traerlos que de nuevo arriba. Simplemente vamos a hacer eso con el contenedor de aplicaciones. Entonces vamos a traer la base de datos, um, entre va a estar haciendo doctor compuesto por Dutch Day, que significa demonio y luego DB. Y ahora se está ejecutando el contenedor Docker para el mongo DB. Y podemos comprobar eso haciendo el Dr P s. Y se puede ver ahí tenemos um, el ah entre ir aquí. Tengo otro contenedor, supongo por supongo que esto es del otro curso. Voy a detener ese contenedor para que no nos confundamos. Apague Wi do Ducker ps. ¿ Ves eso? Entre los DVD's corriendo ahí. Ahora vamos a ejecutar el, um, el servidor de aplicaciones. Pero vamos a hacer un truco aquí que cubrí en el curso docker que lo está ejecutando con la opción de puertos de servicio, que nos permite hacer PDB dicho rastro en el en el contenedor en cualquier pieza del código. Y se detendrá y nos permitirá investigar o ah, el bug, nuestra aplicación. Entonces sigamos adelante y hagamos eso. Perfecto. Por lo que dice que ahora se está ejecutando en HDB en serio. O 5000 que es el directorio local. O sea, anfitrión local. Y si iniciamos otro navegador aquí y ponemos host local, tenemos Hola mundo. Entonces ese es nuestro contenedor que se está ejecutando. Podemos comprobar eso. Dice en el mundo aquí en el hogar V S B y Si cambiamos ese dedo del pie Hola, exclamación mundial y guardar. Deberíamos ver que esto se recargó, que detectó un cambio. Y si recargamos la página, se ve el cambio. Son tan perfectos. Contamos con un contenedor en funcionamiento que cuenta con Mongo DB y una aplicación Web. Um, y verás que enumera Ah, um todas las operaciones aquí en esta ventana. Puedes correr esto como un demonio también si pasas dash D. Pero por ahora, solo ah, ya sabes, seremos felices y celebraremos sabes, que están configurados es que está listo y funcionando correctamente. 8. Vistas Pluggable: en la última lección, creamos con éxito nuestro contenedor de pisos, y ahora vamos a crear una primera versión inicial del punto a p I n. Bueno, no hay no va a estar totalmente montado como el profeta Profesional uno o el de Producción . Pero quiero presentarles a los chicos para frascar vistas probables y luego configurar un endpoint de mascotas muy básico para que puedas empezar a captar los conceptos en torno a las vistas del frasco puggle. Entonces empecemos a retomar eso. De acuerdo, entonces echemos un vistazo a las vistas plausibles, y esto es nuevo de la versión o 0.7. Um, y vistas probables se inspiran en las vistas de generar desde dango, que básicamente te permite hacer vistas basadas en clases en lugar de hacerlo funciones. Y es un ejemplo básico. Tienes típicamente un show users y, um, y um, que los usuarios obtendrán ah,ya sabes, ya sabes, primero obtendrán todos los objetos de la base de datos y luego renderizarán la plantilla pasando los usuarios dedo del pie ese plano plantilla. Si haces esto como un enchufe de una vista, en su lugar creas un show users views de clase. ¿ Lo suprimes desde vistas de pisos y tienen este concepto de despachar una solicitud, y luego pones a los usuarios ahí y luego devuelves la plantilla de render. Y luego haces esto. Agregas la Regla de los Urales y luego tienes la función de vista v el método apagado que muestran la vista de los usuarios . Y este es un poco complicado de agarrar el dedo del pie si no has usado, ya sabes, vistas probables o o vistas basadas en clase en el ángulo. Pero es esencialmente un intento de conseguir más abstracto o desconectar las plantillas de la de los métodos reales o cosas que estás tratando de hacer. Entonces, por ejemplo, podrías hacer algo que sea como una vista de lista, y es un Um ah, método o clase muy genérico . Y entonces tendrías algo así como una revisión de uso, que es una subclase de, al menos para ti. Y luego te pasaron igual que estas dos cosas, e inmediatamente ahora eres capaz de, um, um, mostrar cualquier cosa que sea una lista de cosas sin tener que repetir eso una y otra vez . Um, es ah, es algo que es ah, más fácil de agarrar practicando con él un poco, pero no te voy a pedir que hagas eso porque no vamos a usar esta implementación específica del plan de abuso pero más bien vamos a usar algo llamado el despacho basado en métodos, que es perfecto para el descanso Philadelphia ap eyes y el aquí. Lo que vamos a hacer es que vamos a tener, um, una clase para cada AP. Yo método que se va a tener diferentes métodos, y se puede sólo para encontrarlos por, conseguir post etcétera. Y luego puedes agregar una regla para que ese endpoint de usuario devuelva la, um, esa clase y Ah, y, ya sabes, enrute inteligentemente si vuelve a ser, si supone etcétera. Um, pero vamos a ver que asnos Seguimos en este primer ejemplo de apuestas. Entonces empecemos a construir una, uh, esa apuesta básica, um, endpoint para que podamos algo así, como empezar a sacar los conceptos de las vistas probables y cómo podemos usar eso. Entonces voy a cerrar estas tapas aquí, y voy a crear una nueva, um, una nueva carpeta llamada Ah uh pet. Y esa mascota va a ser la ah, pet endpoint. Y por supuesto, necesitamos tener un yo necesario. ¿ Por qué ahí? Y vamos a tener un ah views fusible B Y, y vamos a tener en un P I p. ¿Por qué? Que es aquella en la que vamos a tener la clase real para la vista probable, y vamos a llenar eso más tarde. Pero lo primero que queremos tener una pantalla, un plano y agregarle eso a la gente de la aplicación, I Así que empecemos eso. Entonces aquí tenemos, um, uh, desde, uh, uh, vistas de mascotas importar pet up y luego registrar ese blueprint que se registra a continuación imprimir pan. De acuerdo, es otro lo peleamos que ahora podemos empezar a trabajar en el A P I p. Y. Y. Y lo que esto va a tener es que vamos a usar el abuso de metanfetaminas. Como lo dije desde, uh, uh, vistas de matraz, vista de método de importación y de matraz importar su hijo. Si solicito y aborto, vamos a necesitar estos. Estas tres cosas en nuestra en su mascota, una p. I. Así que lo primero que vamos a hacer es que vamos a, um vamos a crear una matriz de mascotas. Y por supuesto, esto es para que podamos comprobar esto muy rápidamente. Pero la idea aquí es que esto se almacenaría en una base de datos, no en una matriz en un maniquí o estática. Está bien. Correcto. Pero yo sólo quiero salir así, um, arriba y corriendo. Entonces tengo mi, uh, en un gran tres. Ah, objetos de mascota aquí. Y estas son en realidad mis apuestas encantadoras, Mac, Leo y Brownie. De acuerdo, Lo siguiente que vamos a crear es un método para que esto, um para el get y tú solo pones ese get. Y a cambio, certifican el ah, esta matriz de apuestas que éramos el financiamiento aquí en la clase, y deberíamos poner un poco de espacio ahí dentro. De acuerdo, así que vamos a guardar eso. Y ahora vamos a, um, um, ir a sus puntos de vista, B y Y vamos a permitir que el, um esta vista acceda a ese enchufe por encima de ti. Entonces Pero lo primero que vamos a crear el plano para esto como definimos. Entonces de eso un p me importa que un p I, que es éste. Um Bueno, me olvidé de poner el vaso aquí. Eso es correcto. Entonces Así que tengo tengo la clase aquí clase apuesta un p I, y este es un sub método off método vista. Ahora. Ya vemos cómo tenemos vista de método aquí en la parte superior. Entonces la vista de método es esa clase, um, y estamos sub clasificándolo en el día de pago p I y ese método tiene un get, um, get method a post method, delete on, put justo como el create read actualizas y borras métodos de un A p I y, um y aquí podemos Podemos, ah, ah, referenciar automascotas porque es una clase. Entonces este es el yo que apuesta que ahí estaban definiendo. Entonces esto ahora estamos importando desde paridad nuestra terapia de importación, que es esta esta clase aquí. Perfecto. Entonces ahora sigamos. Entonces tenemos, um la app de mascotas va a ser el plano fuera, Um, la apuesta arriba y luego el nombre. Y ahora nota cómo vamos a hacer esto como los probables puntos de vista que ejemplificamos que revisamos su jabón anterior para arriba. Agregar regla. Perdón. A tu regla, y vamos a tener mascotas slash y notaré que estoy terminando esto con un con una slash. Entonces no estamos haciendo esto como cabría esperar, y esto es muy importante. Esto es como un A P I, um um Syntex, lo que significa que se especie como pensar en ello como una carpeta, ¿ verdad? Cuando tú cuando estás escribiendo una carpeta, pones esa baraja al final. Y lo que eso significa es que vamos a crear una colección a partir de objetos que están dentro de esa carpeta. Eso es como el, um, um, el pensamiento detrás de él. Pero sólo recuerda que para poner ah ah slash al final, si vas a conseguir un conjunto de cosas de la, um de eso un punto p i n. Entonces vamos a hacer función de vista igual a que un p pido por ti y luego mascotas Perfecto. Entonces ve lo sencillo que se ve Muy simple, muy elegante. Entonces tenemos nuestro plan. Tenemos al bebé que me importan de nuestra apuesta a p i B y. y sólo nos instancia que se comió el plano. Y luego simplemente agregamos una regla que diga, Si alguien golpea a las mascotas, endpoint nos acaba de pasar la función de vista la ah Perry p I. Clase y en la clase vamos a definir los posts de Gadd y todas las cosas. Pero por ahora, solo estamos haciendo la parte get de ello. Entonces veamos que, um, teníamos eso corriendo. Yo me encargo de esto, levántate para que ustedes puedan acceder a él, pero vamos, um así que si puedo conseguir que eso vuelva a funcionar teorías. Ah, está bien. Perfecto. Entonces ahora si golpeo el local el host slash, uh, hoyos, consigo el resultado ahí. Y déjame ponerme esto un poco más pequeño para que veas que se está volviendo a un lado . Jason, lista de objetos. Tan perfecto. Esto es esto está funcionando perfectamente bien. Um, Y ahora sigamos adelante y creemos un método post. Pero antes de eso, vamos a explorar algo, una herramienta que va a ser muy útil. Um, eso se llama Cartero. Entonces quiero presentarles eso. Y, um, es Es Es una herramienta indispensable para un P I, uh, uh, trabajo de desarrollo. Entonces vamos a revisar eso. 9. Instalación y uso de Postman: en nuestra última lección, instancia, creó nuestra primera versión fuera de la A p I con un endpoint de apuesta muy básico que nos permite hacer una solicitud de get y recuperar una lista de mascotas que configuramos como sauna Ray dentro de la clase. Pero ahora queremos, um, um, hacer cosas más complejas, como hacer publicaciones y, um, um, tal vez enviar algunos datos de carga útil dentro de esas solicitudes. Y es una molestia hacer esto usando el navegador o incluso un terminal, um, como, como, terminal como línea de comando. Entonces en cambio, hay una muy buena herramienta llamada cartero que llevo usando desde hace muchos años que te permite , um, gestionar y crear esta solicitud y recuperar los resultados de una manera muy agradable. Muy bien formateado. Entonces vamos a ver cómo instalar carteros y cómo usarlo. De acuerdo, así que vamos a seguir adelante y, uh, encontrar el, um, post menta. A p lo puedes hacer post significado para Mac, y esto fue inicialmente un, um un plug in, y todavía es aplaudiendo para el para chrome, Pero luego construyeron una especie de como el nativo, um ah programa o aplicación para que descargues. Y hay una para Mac windows en chrome. Entonces voy a usar la para Mac, que es la computadora que tengo y ella Ah, ahora se está descargando aquí mismo. Y luego solo haces clic ahí y deberías tenerlo en tus descargas, y luego simplemente arrastras y sueltas sobre tus aplicaciones. Entonces ahora tengo cartero ahí dentro. Um, y eso es todo. Es bastante fácil. Entonces ahora voy a, um, um, doble click ahi, click open y aqui han post tripulado. No, Um, si quieres, um, como, como, almacenar y sincronizar tu A P. Me gustan los endpoints o r o solicitar. Puedes apuntarte y puedes usar global, que es, creo, lo que hice. Um, o puedes poner tu correo electrónico usando y pasaporte. Y es algo útil, porque si estás, digamos, probando esto en tu computadora de casa y, uh y luego quieres algo, ya sabes, en otra computadora de la oficina, tal vez puedas simplemente, como, hundir la cuenta, y luego tendrás todas tus colecciones, um, um, fuera de las pruebas de endpoint. Pero por ahora, vamos a saltarnos eso y esto es como la principal, uh, la pantalla principal para la aplicación y la forma en que probaste contigo. Inicialmente, solo haces una solicitud de get aquí, así que voy a hacerlo Es ser, um, anfitrión local y luego mascotas, que es lo que teníamos en el, um aquí mismo en el navegador. Y aquí tenemos estos resultados. ¿ Verdad? Entonces si hago eso y me pegan mandar ver cómo consigo el, um me sale la versión formateada del off el Jason Hodges, lo cual es realmente bonito. Es decir, me gusta conseguir estas cosas como formativas y esas cosas. Um, así que aquí está diciendo que puedes guardar tu solicitud para que puedas manejarla. Y eso es lo que te estaba diciendo. Si te registras, puedes sincronizar estas cosas a través de diferentes computadoras. Pero entonces lo que voy a hacer es crear una colección, y ojalá tengas, um, tendrás la ah, la versión sincronizada de esto y ah, voy a no necesito esto. Esto es como una prueba uno. Él va a borrar eso, y yo voy a crear una nueva colección, y lo voy a llamar apuestas a p I y tú puedes hacer esto por tu gusto,ya sabes, ya sabes, cada aplicación, tu escritura y esas cosas. Por lo que dentro de una colección que se puede tener solicitudes. Y ahora puedo guardar esto requiere porque sé que cada vez que uso, um quería las solicitudes de get. Lo haré con esto. Estás bien. Entonces voy a guardar esto, y se va a decir en qué colección y voy a decir mascotas, A p I Y aquí puedes poner una descripción. Um, usualmente me gusta poner un nombre tan teatral como, um, el acabado lo que está haciendo esto. Entonces voy a decir, uh, conseguir mascotas endpoint o algo así. Um, y entonces estás a salvo y tienes tu descripto uso descriptivo, ya sabes, información ahí. Entonces eso es esto dentro de la mascota. CBS. Entonces si hago clic en mascotas FBI, ver cómo se pone, um llamado colapsar ahí. Ahora, lo que también hago es que puedes crear subcarpetas. Entonces si tienes, digamos las mascotas FBI, puedes crear una carpeta así aquí y luego haré lo que sea. Esa es la que está relacionada con las apuestas del dedo del pie. Puedo crear esa carpeta ahí y luego puedo arrastrar. Hay, como, como, ya sabes, algo así como hacer largos pinchazos y arrastrarlo a las mascotas. Y ahora tengo mi sub carpeta con mi solicitud ahí. ¿ Por qué? Porque, um después voy a tener una tienda, ya sabes, y apuntar que podría tener puntos finales más viejos. Entonces tengo todo tipo de como organizar bien su Así que eso es básicamente cartero en un vistazo. Es una muy buena pieza de software que usé, ya sabes, me como dije, he usado durante años cuando acaba de empezar como un enchufe de cromo, y ahora que lo tiene, es, ah, versión independiente. Es realmente útil. Entonces con esto, el siguiente paso sería crear un post endpoint para mascotas y ver cómo hacemos eso. 10. Nuestro primer POSPOST: Bienvenido de nuevo, eso en esta lección, vamos a ver cómo lo hacemos. Um, post real que, como saben, post A es equivalente a crear un nuevo registro. Um, y como vimos en la última lección, empezamos a usar cartero como método o una forma de poder interactuar con nuestro A p i de una manera más fácil. Y realmente va a brillar en esto en este nuevo ejemplo, que es configurar un objeto que vamos a mandar toe the post endpoint en nuestras mascotas ap. Entonces, tomémoslo arriba. Entonces aquí estamos. Son un p. apuesto un p I y vamos a añadir un nuevo método, que es el método de post. Entonces lo que vamos a hacer es lo siguiente. Vamos a definir un post lo mismo que el propio EU, y luego vamos a comprobar si no hay, um, um, carga útil de Jason en la solicitud. O si el nombre no está en el sobre la petición, Jason, entonces vamos a devolver un, uh, un error 400, que está encendido vamos a echar un vistazo a algunos de los h dos porque pero eso es como un , ya sabes, algo así como un heredero esperado. Entonces si tenemos esas cosas, entonces vamos a, um, básicamente, añadir un i d dedo del pie la longitud de esa violación que es array y aumentando en una. Y luego vamos a tener el nombre que se ha pasado en el poste, Toby, el nombre en ese objeto mascota. Y por último, voy a subir el ese objeto a la a la matriz y volver. Um, ese nuevo objeto, que es algo así como un regular, um uh, digamos mecanismo o o ah, filosofía cuando se crea un nuevo registro, es que un tipo de, como retroceder para declinar el registro que acabas de crear para que el cliente pueda confirmar que creaste el registro correcto y, um y además vamos a tener un nosotros puedes ver aquí un dos un uno, que es otro borde para ser código que se supone para decir que esto fue creado y, um o básico o hermano. Se recibió la solicitud, y voy a Ah, realidad creé un nuevo disco, así que vamos a llevarnos los abrigos HDB en una cama, pero empecemos a quedarnos con esto. Voy a salvar esto. Y tengo docker aquí corriendo en, uh, en mi computadora. Entonces voy a ir ahora a Cartero, y vamos a, um, um, básicamente crear una nueva, um, um, una nueva petición que va a ser opuesta. Por lo que aquí selecciono post. Y como pueden ver, seleccioné una nueva pestaña. Um, en este signo más, voy a crear Voy a poner las mascotas aquí. Ah, y también me olvidé. Acabo de notar cuando estaba revisando la grabación que esto no tenía un espacio final. Entonces, como puedes ver, ahí hay un pequeño punto rojo. Eso significa que esto no se ha guardado aquí en la colección, así que puedes hacer Ah, um, comentario S O R, uh, cosa que puedes hacer colección. Oh, aquí, tú esta caja fuerte. O podría hacer encomiar esto. Entonces voy a guardar esto. Y ahora que ese endpoint tiene ser seguridad aquí en el indio, la colección tan perfecta. Por lo que ahora ten el puesto. Pero como saben, Post no envía la solicitud real ni los datos sobre el sobre el euro como el get nos solicita . Entonces, en realidad soy la mitad. Tengo un cuerpo aquí que es una, um, especie de, un tabulador que puedo pasar al a la solicitud. Y aquí voy a mandar un rol crudo, um, um, más selecto aquí. Se pueden seleccionar los datos del formulario. Um, puedes seleccionar Ah ah, para mural codificado. Se puede tener binario. Al igual, si estás si estás subiendo imágenes, y aquí puedes seleccionar qué? Tipo apagado, um, datos brutos. Y aquí voy a seleccionar a Jason. Ahora. Lo que hace es ahora que lo ves Encabezados tiene una nueva opción ahí. Si hago clic ahí, veo que dice aplicación de tipo de contenido. Jason. Entonces estamos enviando esto en el encabezado. Entonces la escalada mandando esto con pelo diciendo: Hey, Hey, Sr A P Te estoy enviando una solicitud. Tener algunos datos en el cuerpo sobre ese tipo de contenido es aplicación, Jason. Entonces así es como tú, um, um, mandas y le dices al FBI qué tipo de contenido estás estableciendo, que es parte de la detención. Completo. A. P I, um restricciones, como vimos antes, es que la escalada forma qué tipo de información fuera que está enviando, y también a través del través de los verbos, el post aquí ellos consiguen. También está comunicando ¿Cuál es lo que eres, um, tu petición o qué? Cuales son tus intenciones cuando estás cuando estás publicando esto. Entonces ah, aquí. Solo necesito agregar algo como esto. Acabo de poner un soporte ah y luego un nombre de pie. Y luego voy a poner, um, um, nombre de mi hámster Lalla. Entonces esa va a ser la petición. Entonces cuando mande esto, va a entrar en el, um al puesto aquí, y va a tener el nombre en la petición, Jason. Y entonces voy a poder agregar eso al objeto y luego anexar dedo del pie este remolque esta apuesta, uh, array. Entonces sigamos adelante y probemos eso. Voy a dejar que guarde esto, y va a decir dónde voy a salvarlo. Um, voy a decir que esto es post pets endpoint, y luego voy a poner esta elección pits un p I en la carpeta de mascotas y seguro. Por lo que ahora tengo el puesto en su segundo. ¿ Ver? Está bien, Perfecto. Entonces vamos a probarlo. Voy a poner algo de luz aquí y luego mandar perfecto, así que deja que haya mucha información fuera aquí que quiero que mires. Entonces uno, obtengo estatus a uno creado. Y como pueden ver, cartero tiene esta biblioteca muy astuta fuera de los códigos HDP que dice que la solicitud se ha cumplido y resultó en la creación de un nuevo recurso. Por lo que hemos creado esencialmente un nuevo recurso. También nos dice cuánto tomó y el tamaño de la de la respuesta atrás, que fue de 204 mordeduras en eso. Se puede ver. Esto es lo que devuelve el servidor. Se puede ver que yo D cuatro es ahora el yo d para eso, Laleh. Y por supuesto, tiene sentido porque teníamos, um, hasta el número tres aquí. Y adicionalmente, responde de nuevo con encabezados, que incluyen información sobre el contenido, longitud fuera de la información devuelta. También dice que es va a devolver la aplicación Jason Format. Tiene una fecha de la solicitud y también qué tipo de servidor, que en este caso, es un ya sabes, uh, uh, trabajo soya por diversión. 34 Entonces esto se pone automáticamente por el por matraz, y es realmente útil para los clientes. Pero en todo caso, hemos creado con éxito, um, um,un nuevo récord aquí y Por supuesto, esto se queda en la memoria. No estamos guardando esto en ninguna parte de una base de datos, pero en cualquier caso, sigue siendo una bastante buena idea o concepto off. ¿ Qué? Um, los diferentes endpoints para Para esto un p voy a empezar a parecer 11. Códigos de estado de HTTP: en la última lección, echamos un vistazo a la creación de un nuevo registro usando la Post Request. Y por supuesto, conseguimos este tipo de como una breve introducción a la imagen para ser captado, que era a uno con, um, que corresponde a crear un nuevo objeto, um, en imagen a llamar. Pero quería, como, como, repasar brevemente algunos del código de estado http porque creo que es importante que empieces a familiarizarte con facilidad y realmente te asegures de que estás regresando el aire correcto Northerners los códigos de estado correctos porque son muy específicos a las operaciones. Y tengo Este es un recurso muy bueno al que voy a poner el link en el curso, que repasa algunos de los, uh, o la mayor parte del status va pero también pone un poco tipo de estrella como en las principales, y estamos va a pasar por ellos rápidamente. Entonces empecemos con S 0 200 Así que dos x eje, es dedo oneto cuatro, y cualquier código que empiece con el número dos, el primero 1 es 200. De acuerdo, que ojos Esencialmente una solicitud ha tenido éxito. Esa es la que regresamos en el ah, aquí en el get. A pesar de que no decimos específicamente ahí, pero matraz lo está devolviendo para nosotros. Pero a lo mejor es simplemente, como, ya sabes, explícitamente llamarlo. Y como puedes ver, volver en matraz te permite poner esta pequeña coma y luego una en medio de mecanógrafa Preguntar código viejo , que es realmente útil. Um, así que digamos eso así que sigamos mirando los algunos de los códigos de estado, Um, y noté que cuando hago clic aquí, me dieron esto, como poco como expandido, uh, sección y aquí exceso también, lo que debes tener en la cabeza en el poste y traza, que es , ya sabes , diferente , tipo de, uh, métodos o h ser, um, tipo de solicitudes fuera que estaban haciendo, pero, um, así que 200 está bien a uno significa que son como vimos antes se cumple y resultó en la creación de un nuevo recurso. Um, el Ya sabes, el recurso recién creado puede ser referenciado por los ojos. Regresa en la entidad de la respuesta con más Pacífico tu ojo por el recurso dado por ubicación. Campo de cabecera. no lo hemos hecho. Entonces, ¿a dónde acabamos de regresar? Como recuerdan, el, um acabamos de devolver el recurso en sí o no devolvimos esto. Y esto es algo bueno para empezar a pensar, que es ahí Odio debe tipo apagado como, acercamiento a las cosas. Correcto. Entonces vamos a arreglar eso en una en la siguiente lección. El siguiente es dos o cuatro. Sin contenido. Y esto usualmente significa que, um, la solicitud Waas fue recibida y estaba adecuadamente, um, proceso. Pero no necesito devolverte ningún dato porque no modificaste el recurso. Um, y creo que usamos esto cuando hacemos la elite. Eso es correcto. Entonces a la cabeza, porque estás construyendo el disco, no necesariamente necesitas devolver el viejo disco porque eso ya está borrado. Eso usted? Por lo general no quieres devolver esos 200. Vale, porque, um, es algo así como, OK, tengo al responsable. No me estás contando nada al respecto. Es igual que llegué a responder por lo que a un cuatro se creó para eso. Es como si te estuviera dando una confirmación de que me dieron la petición e hice algo , pero no te estoy enviando de vuelta, Um, el cualquier objeto o cualquier fecha Así a una pieza de cuatro. Perfecto para eso. Entonces ahora nos metemos en los 400. Por lo general no lo hacen. Estos son aire. Por lo que 400 malas peticiones. Eso significa que las peticiones Ismael Foreign, significa que se supone que estás enviando algo o no estás enviando eso de vuelta. Tenemos esa de aquí en el en el poste. Si ahí si la persona o el cliente no está enviando la solicitud Jason o no está enviando un campo llamado nombre en la solicitud, estamos enviando un 400 que es la forma correcta de reembolsar a eso. Um, así que 400 significa que sí enviaste, um, ya sabes, la información sobre nosotros conseguimos algo de información, alguien o algún pedido de conseguir. Pero necesitabas hacer otra cosa. O bien. Incluir nuevos, uh, nuevos campos por ahí. Ya sabes el nombre del campo. No es correcto, ese tipo de cosas, Uh, para una va a ver cuando tengamos autorización. Lo que significa ese tipo de como un login, correcto. Vamos a implementar un registro de aplicación en eso que Onley registre las aplicaciones pueden conducir con nuestro FBI para una significa que no estás enviando las credenciales adecuadas. Entonces estoy como no, uh, uh, ya sabes, no voy a poder cumplir tu petición, um, um, igual cuatro o tres, aunque la diferencia que poco sabes, tipo de diferente pero está relacionado para tres se devuelve cuando sí pasas el inicio de sesión y contraseña correctos , pero no estás específicamente autorizado para hacerlo. Acción off puede estar creando un nuevo pad. Entonces, por ejemplo, digamos que tienes un tipo de usuario que puede sacar todas las mascotas de tu de tu servidor, ¿ verdad? Pero tienes otro tipo de nombre de usuario y pasaporte como autor o administrador que te permite crear realmente. Entonces, um, esto sería devuelto, por ejemplo, para el primer usuario que es sólo a pesar de que es amado y la contraseña sea correcta. Trató de gustar publicar y crear un nuevo objeto, y regresamos que por tres 44 significa que no encontré el recurso, y esto puede ser como si se puede deletrear el ya sabes, la chica encendida. Por lo general ese es el tipo de caso. ¿ Está mal escrito? Um, el yo d de un objeto o recurso específico. Entonces, ya sabes, para cuatro has parecido para cuatro en el pasado, cuando tipo de, como, como, vas a un sitio web y te perdiste mal escribir el nombre de la página o ese pitch fue movido a algún lugar de lo contrario y no devolvió un código 300, um, para nueve es conflicto on. Eso significa que tal vez estás tratando de insertar una nueva mascota que tenga el mismo nombre fuera en mascota existente para que puedas devolver un para nueve, lo que significa que el, um, que el usuario está enviando información que va a ser ya sabes, conflictivo. Y por último, los cinco, Los 500 Siri's. Se preguntan que vas a usar la mayor facilidad. Cinco fondos servidor interno, que es retorno cuando algo como malo sucedió en el lado del servidor. Esto sería como, ya sabes, que ibex bajó o el, um el servidor de aplicaciones, uh, uh, está generando un espejo que no está siendo atrapado en un try excepto código. Es como, ya sabes, vomitar, ya sabes, sabes, así que el matraz normalmente regresará esto automáticamente y al cliente se le informa que hay un teléfono para, AH 500 el cual es, ya sabes, básicamente el hay un problema con el servidor, no con tus peticiones ni la forma en que estás haciendo las cosas, sino algo en nuestro extremo. Así dijeron los principales, ya sabes, es bueno sólo echar un vistazo a algunos de estos otros y familiarizarse con esos. Y vamos a usar ah, montón fuera de esto en todo el curso. Entonces sigamos. Algo así como empezar a agregar algunos hizo un dato a nuestro a nuestras mascotas objetos eso que somos, um, más especie de, hey, no cumple. 12. Un verdadero CRUD: Entonces en la última lección, revisamos los códigos de estado http lo cual es útil para que el cliente obtenga información sobre lo que sucedió con la solicitud que se suponía que remolcaba el servidor A P. I. Pero ahora lo que quiero hacer es trabajar un poco más en ese endpoint de mascotas y ah, haciendo más odio, haciendo más odio, adeudos cumplidos, han hecho algunos un más tarde ahí así como habilitar conseguir una específica una mascota a través de su yo d . En también implementar los métodos put y lead. Entonces, empecemos a hacer eso. Entonces empecemos por dirigirnos a la mascota de uso B y Y quiero, um, hacer esto más, supongo, Ah, un poco más escalable. ¿ Y qué? Yo sólo voy a ir. Voy a reemplazar um la vista Toby a, um un viable para que luego pueda hacer diferentes métodos para ello. Entonces la que cuando haga esto es que voy a hacer una vista de mascota, que va a ser igual a la pet ap te pido auf pet, a p así me anuncio que ahora inserte esa línea también, a los diferentes métodos. Entonces el 1er 1 que voy a hacer es voy al get Pero este es el get para todas las mascotas. Entonces voy a hacer esta mascota arriba en nuestras mascotas de euro. Y cuando pase, puedes hacer este Default pagado yo d. Porque recuerda que vamos a remolcar a un individuo, ponerte más tarde, um y éste sería para todas las camas. Y aquí puede hacer pet vernos la función de vista, y entonces los métodos que van a ser para estos para específica tu regla va a ser conseguir. Por lo que esta respuesta va a ser cuando pasemos las apuestas. Y pero no hay nada más ahí, así que eso es conseguir mascotas mayores. Pero ya que la función sobre el sobre el método que voy a crear aquí en un p I para el get no va a ser dividida a, um uno. Va a ser si pasas y yo d y los demás. Si no pasas el yo d. Y entonces voy a poner este defecto, Toby pet, yo d igual a ninguno. Entonces el siguiente que va a hacer es el post, y va a ser similar a tu regla y luego patea. Pero aquí, sólo voy a poner el método Toby post aquí no tenemos, ya sabes, rutas diferentes. Es igual que esa sola ruta, porque siempre se supone que a la a las mascotas y punto. Y por último, voy a hacer el método para el, um para el get individual me d poner y borrar porque todos esos requieren un i. D. Toby pasó. Entonces voy a decir de Pat no es entrevistador apagado pagado i d Serán funcionalmente gastados vista, y entonces voy a tener los métodos se pongan y elite perfecta. Entonces ahora ves como tenemos, ya sabes, los diferentes casos de uso el 1er 1 sería cuando consiga todas las mascotas, y en este caso, tengo que pasar. La mala idea no fue porque voy a estar esperando eso en el nivel a p I. Y luego voy a tener el, um, el para el post, que es crear a cualquiera que no tenga ninguno en los casos de uso. Y luego finalmente, cuando paso mascotas con una mascota entrevistadora me d Eso puede aplicar para que me pongan en la tapa. Entonces no hay aviso de que no estamos haciendo ahí incluso entonces, Algo así como los casos de cambio en la entrevista misma, cual es una cosa bonita que vistas aplicables nos consigue que se decidirá aquí. ¿ Cuándo? Cuando estamos cuando llamamos al Perry P I. Nos va a mandar inteligentemente dedo del pie el método adecuado dependiendo si obtenemos post boat o borramos. De acuerdo, así que lo siguiente que voy a hacer es ir a la A P I y voy a insertar , um aquí. Ah, un poco de odio debe. Entonces voy a tener el lince, Una sección de lince que va a decir, ¿Cuál es el euro para llegar a ese recurso? Entonces solo voy a copiar y pegar esto y dice enlaces y es una matriz, para que puedas tener múltiples enlaces en el objeto. Pero el que estaban definiendo es uno mismo, Y este tema de ojos de rehl. Es como un uso fuera de hdb, um, um, acing impuestos donde esto está diciendo, ¿Cuál es el pariente, el tipo relativo apagado como qué? Cuál es la relación fuera de esto fuera de este enlace y puedes usar auto ferroviario o puedes usar riel igual, creo subrayado nuevo Si queremos abrir en una nueva ventana. Pero en todo caso, esto se está referenciando a sí mismo. Y está diciendo para llegar a este recurso, hay que ir a esta zona treff, que son mascotas. Ah, corte uno. Alguien es lo mismo aquí, pero en este caso van a ser apuestas slash a. Y como puedes ver, esto coincide con la idea, ¿verdad? Entonces si le pegas apuestas a, entonces va a conseguir a Leo. Si le pegas, esa es una que vas a conseguir, Mac. Y por último, apuesta tres. Entonces vamos a por Ah, vamos a trabajar en el get um, eso fue una mala broma. Entonces vamos a tener una mascota i d ahora, como mencioné y recordar lo que hicimos aquí, que es como, si el si las mascotas funcionan fuera de conseguir no tiene i d después, entonces seguimos pasando. Pagado yo d sabía para que esto no se rompa aquí. Ver, eso se requirieron. Este es un parámetro requerido en la única función. Entonces vamos a decir Eve, Um, si eso y esto es como si quieres conseguir la, um ah, la mascota específica, entonces vas a hacer lo siguiente. Entonces tenemos la matriz de mascotas y entonces estamos este obstruyendo uno, porque recuerden que nuestra carrera o menos empieza en cero. Entonces solo digo, consígueme el par que d Eso se está pasando ahí. Y y así amenaza uno Para que el i d para, um, para Mac, que es uno correspondería al elemento cero, y luego para Leah sería el elemento uno y así sucesivamente. Y luego, um, podemos deshacernos de esto, y entonces no tenemos más. Entonces solo decimos regresar. Ups. Entonces esto es para cuando quiero conseguir todas las pats de mascotas. Y luego acabo de pasar el, um todo A ray ahí dentro. De acuerdo, así que eso es para conseguir función. Um, y lo otro que queremos modificar aquí es a través del son los enlaces. Entonces vamos a tener lo mismo aquí, así que voy a tener enlaces. Pero tenía lo equivocado, copiado y pegado. También vincula, y luego va a ser relativo auto h era una balsa mascotas, además de la cuerda fuera de la longitud que las mascotas. Ah, Ray. Um, más uno. Así que vamos a tener así que ten la fuerza fuera de la longitud de auto mascotas más una Así que esta es la longitud más una aquí, y esa es la cuerda de ello. Ah, ¿por qué? Porque estoy creando un nuevo disco y va a ser esencialmente uno más el, um, um, el número fuera de elementos ahí dentro. Perfecto. Um, creo que eso es todo por las cosas que queríamos hacer. Vamos a hacer la puesta en la tapa en la siguiente lección, pero empecemos a probar esto. 13. PONer y DELETE: Entonces vamos a probar el ah, conseguir solicitudes primero, um, y ver si obtenemos los mismos resultados. Entonces tenemos que conseguir endpoint aquí. Um, tengo al Dr. Running, y creo que tengo el Sí, esta cosa está funcionando un oleaje. Entonces hagámoslo estamos llegando aquí y perfectos. Entonces aquí veo el, um lo diferente. Ah, déjame ver si puedo. No, es para copiar. Um, quería, como, ampliar esto. Ah, ahí tienes. Un poquito. Está bien. Entonces veo sus escupitones. Ya sabes, yo d enlaces HF mascotas. Un verdadero yo. El nombre es bofetada lo mismo con las mascotas a etcétera. Para que eso funcionara. De verdad bien, no estoy pasando un i d Son Así que eso significa que el, um, la función está entrando en este caso más porque no hay no hay camino. Y por supuesto, esta cama yo d. dijo ser dicho a ninguno porque esto se está poniendo a conocer en la solicitud get. Um, porque no tengo nada después. Um, donde nosotros cuando hago el individual. Um, tengo esta mascota i d. Después. Um, y en realidad creo que si hacemos click en esto. Ya ves cómo se puede hacer click. Creo que funcionará, y creará una nueva pestaña. Pero veamos que eso sucede. Um, bien, perfecto. Por lo que crea una nueva una nueva pestaña. No lo enviaron por nosotros, pero está diciendo que consiga una mascota local. Entonces si pudiera mandar su grandioso Así que conseguí en este caso, ya sabes, Max record por sí mismo, dice su i d uno y los enlaces nosotros mismos y, uh, y el nombre. Entonces si cambio esto a, voy a buscar a Leo. Si cambio esto a tres, consigo a Brown. Eso es impresionante. Entonces vamos, um vamos a guardar esto en el yo supongo. Vamos a renombrar esto conseguir todas las mascotas. puntería. Y luego voy a salvar a este Toby, conseguir ah, un endpoint de mascota, y lo voy a poner en la colección Mets. Impresionante. Entonces, um, probemos un post y veamos si obtenemos, um, correcto, um, los resultados correctos. Entonces tenemos aquí, uh, ver mascota llamada Lalla. Desde que creo que empezamos, el servidor eran No tenemos la LA ahí. Sí, sólo tenemos hasta brownie. Entonces mandemos esto y veamos qué pasa y perfecto. Tenemos apuestas por las que es Lalla. Y ahora si intento aquí y consigo cuatro, consigo a Lalla ahí con sus mascotas. Ah, Treff impresionante. Entonces veamos que dice que no lo hemos guardado. No queremos guardarlo porque sólo queremos decir que es uno. Entonces lo dejaremos en eso. Lo siguiente que vamos a hacer es trabajar en los métodos put y delete. De acuerdo, Ahora vamos a trabajar en la operación de actualización, que es el método put X to be. Pero quería darte consejos ah ward off aquí porque put también se puede tratar para actualizar o crear un registro. Y el sitio de creación viene si lo eres. Si das declinó la opción de, um, enviar en objeto con su propio I. D. Entonces, por ejemplo, digamos que yo, en lugar de nuestra creación la idea de la apuesta Yo expuse un, uh, poner un método donde si pasabas el i d, entonces el que Paris creó con la idea que declinó pasa Um, no encuentro ese caso de uso muy a menudo. Entonces lo que suelo hacer personalmente es usar el método put como la actualización, y eso va a ser algo así como como lo uso en el resto del curso. Pero, ah, la salvedad es que se puede utilizar puesto también bajo las especificaciones HDP, como post. Pero pero en un post donde se permite al cliente crear un registro con un I D que declinó culo elige, Um, Um, y técnicamente, si queremos actualizar solo un campo fuera de registro, a menudo objetan . Después usas otra salida para ser método parche frío. El problema con los parches que mucho fuera, Digamos que sabes dónde JavaScript de Klein, y aún más sobre los clientes no soportan respaldos. Muy bien así pero encendido de nuevo, Patch significa que mandas esa idea y luego solo una sensación para actualizarse versus poner. Es necesario enviar la idea y todos los campos. No se puede simplemente enviar un campo por ese objeto que me gusta, dije. Personalmente, usé ponernos parche de ensayo, lo que significa que puedes pasar el I D y solo un campo o todos los campos. Pero eso es algo que yo que compro el cartel que elegimos hacer y se lo comunico a la A P I y usuario. Entonces, sí. Entonces ustedes chicos tienen ustedes saben, esta esta esta salvedad en mente y asegúrese de leer sobre parche y poner en el en el recurso que voy a poner en la en la lección. De acuerdo, Así que vamos a trabajar ahora en la petición puesta aquí. Y así vamos a hacer lo siguiente. Vamos a encontrar el método con la mascota i d. como parámetro. Y luego vamos a comprobar si la solicitud tiene un objeto Jason. Um, o si no tiene nombre en la solicitud, entonces vamos a bordo con un error 400, que es, ya sabes, malas peticiones. A continuación, voy a reducir el recuento de la matriz en uno. Y quiero decir que nombre de mascota es igual a la solicitud nombre Jason. Y voy a devolver el objeto de vuelta al usuario. Um, voy a devolver aquí un 200 lo que significa que la operación fue exitosa y estoy regresando el sobre el objeto, pero porque no es ningún objeto. No voy a devolver un tour uno, sino más bien un A 200 y ah, sólo para Entendemos lo que está pasando aquí. El yo estoy sometiendo un dedo la cama me d Eso se está pasando porque otra vez Ah, carrera. Ten un índice cero para el 1er 1 Así que si estás de paso, digamos una solicitud para actualizar a Leo. Estás pasando un número dos, pero en realidad estoy quiero sacar el ah, el elemento mascota de uno. Entonces este tus sirios su derecho? Entonces, um, eso es todo. Ese es el puesto. Vamos a seguir adelante y hacer la eliminación. Por lo que encuentras el método la elite. Y recuerden esto el plomo es el método realmente ser. Simplemente no es una función que simplemente estamos llamando eternamente a ese plomo. Y aquí voy a llamar a la palabra del Clave para una carrera, que es el líder el un ah específico, elemento fuera del off Thea de la matriz. Y finalmente le devolví un objeto Jason vacío con él con un dos o cuatro y recuerdo lo que dijimos de dos a cuatro. Significó que la operación pasó, pero que no estoy regresando ningún objeto al al cliente. Pero yo estoy haciendo dedo del pie un foro confirmando que la elite sí pasó bien, así que sigamos adelante y probemos eso en el cliente del cartero. Entonces vamos a revisar realmente rápidamente qué es lo mejor que tenemos. Entonces tenemos a Mac Leo Brownie. Entonces voy a clonar este post toe, um, para ser un, um el puesto Porque vamos a tener que pasar el este cuerpo aquí con con un nombre actualizado . Entonces hay una función aquí si condonas ocho públicas. Y vamos a renombrar eso para ponerlo. Ah, arriba apuestan especifico. Y así tenemos que pasar un i d. Aquí. Entonces voy a, um perdí la parte superior aquí, y salvamos esto, o esto es puerto Guardar y déjame crear un nuevo top aquí. Pongamos el puesto ahí se pondría. Entonces volvamos a conseguir todas las mascotas. Entonces tengo a Mark, Leo y Brownie. Entonces voy a renombrar a Brownie por Lalla. Entonces eso son mascotas Tres para acariciar el pasado Mejores tres. Y puse ahí a Lalla. De acuerdo, entonces cuando haga esto, Operación Brown va a ser renombrada Lalla, Así que vamos a mandar eso. Y ahora consigue mascotas tres su nombre Lalla, Y note que me dieron un 200. De acuerdo, cual, um, lo cual, um,básicamente está aceptando que la solicitud fue procesada con éxito y que devuelva el arriba, Um, Y si conseguimos todos los objetos aquí, a ver, Sí, vamos a conseguir mucho por ahí. ¿ De acuerdo? Entonces hagamos uno nuevo. Y yo voy a hacer la elite, y voy a clonar el get por eso. Entonces vamos a llamar a esta elite, y voy a borrar el tercer disco, que es Layla y ah, déjame actualizar esto. Toby el plomo. Una mascota, ahorran ahorro más. Correcto. Perfecto. Entonces ahora voy a borrar el número tres, que es lava. Déjame mandar y perfecto. Obtengo un dos o cuatro, lo que significa que el proceso del servidor, la solicitud, pero no hay ningún contenido devuelto. Y si lo hago, llego aquí. Veo que ahora solo tienen Mac y ver 14. Autenticaciones simples: Por lo que hemos visto todas las operaciones de creación de gran actualización y eliminación. El multitudinario operaciones para son muy simples en la memoria, amable de mascota, A p I y punto. Pero ahora queremos, ya sabes, subirlo una muesca. Y cuando estás lidiando con ojos P, siempre estás lidiando con autenticación y autorización porque la seguridad es algo grande en lo que deberías estar pensando con tanta normalidad, lo que yo recomendaría, um, para hacer si es si es si quieres ir, como todo el camino es estudiar cómo habilitar apagado. Entonces oficina, este protocolo que mucha de la, ya sabes, ap muy profesional que uso es como Twitter. Um y, uh, es un poco complicado de configurar, y podría hacer ah, muchos curso o YouTube serio sobre la configuración de un python basado en servidor. Pero lo que he hecho en proyectos en el pasado, tanto para mí como para aplicaciones profesionales, es una autenticación basada en token, que es muy similar toe off. Pero no es 100% de descuento. Entonces, um, veamos cómo podemos hacer esto. Es ah, uh, algo así como quería dibujar hasta que ustedes puedan comprobarlo. Um, Entonces lo que vamos a hacer aquí es que vamos a tener un, um vamos a usar los encabezados. Entonces en ocho en la salida E p. Tienes básicamente, ya sabes, capas fuera de información. Entonces tenemos, ya sabes, el realmente tu ojo donde puedes pasar información. Por ejemplo. Olvídate de las solicitudes. Um, tienes el cuerpo, que es lo que vimos cuando estábamos haciendo el post y, um, y poner información, que es como datos. Eso es Ah, eso es, um, parte del off the request, Pero también tenemos encabezados. Y vimos los encabezados cuando estábamos hablando de la, um ya sabes, aplicación Jason. Jason le hizo recordar eso. Entonces es muy común que uses los encabezados también para, como, como, autenticación. Y lo que normalmente hacemos es usar esta cosa llamada en X header X dash. Entonces X escapa significa que vas a estar diciendo, ya sabes, x arriba. Yo d por ejemplo, para la aplicación yo d o en y ex como Ah, es un token. Y esto es como un tipo de cosa como una contraseña, donde tienes, como, como, información para poder acceder a tu, um, tu ah, tu A p I contenido y te reventaste encabezados en cada solicitud individual. Um, así que la forma en que funciona y es algo parecido a tener un nombre de usuario y contraseña, algo así como iniciar sesión. Es ah, es básicamente lo siguiente. Tienes una, um no tienes una app que haya re leído peticiones de escritura o acceso a tu A P I y esa app va a tener una app i d. Y va a tener un secreto de app Y piensa en esto como el nombre de usuario y contraseña, derecho. Entonces esto va a funcionar. Utilizan su nombre y una contraseña. Ahora, la cosa es, que no quieres pasar cada solicitud, tu uso apuntando pasaporte, porque es algo así como, um, ya sabes, si por casualidad alguien llega esos encabezados, vas a estar expuesto. Por lo que quieres separarte, los usan en pasaporte de los encabezados reales que estás pasando. Entonces la forma en que funciona es que, um, para el paso número uno, golpeas algún tipo de punto final. Eso es como obtener token, ponerse en el token de marcador, y luego esto. Póngase a hablar. Tú trabajas, vas a tener, um a, um vas a pasar en el en el poste. Um, de la solicitud de post, pasaste el arriba yo d y el secreto arriba. Ahora bien, esta información que estás enviando en el post sobre el cuerpo sobre la bestia de datos no puede ser leída por ella. Adiós adiós. Servidores que son servidores intermedios. Entonces esa es una operación muy segura, tipo de similar, ¿ verdad? Y luego después de que publiques, luego vuelves del servidor. A un token. Y este token es un tipo aleatorio de como una combinación de letras y números, y veremos cómo generamos uno de esos. Pero también tiene una caducidad off, Digamos X horas o un día. Um, ¿Por qué? Porque lo que quieres hacer es que porque este token, vas a estar pasando los encabezados. A lo mejor alguien puede potencialmente leer que el día tendrá acceso temporal a hacer cosas con la A P I. Pero si sabes que el cliente detecta de alguna manera que alguien está leyendo esta información o, ya sabes, informa tú, um entonces pueden revocar esta ficha y luego ya sabes, eres tu viejo, eres bueno. Tú el cliente o este hacker no tiene tu arriba i d en secreto. Ellos sólo tienen el up yo d y el token Y ese token es, ya sabes, generado a menudo. Entonces después de tener este token paso número dos está en cada solicitud. Entonces digamos que quieres conseguir el endpoint de las mascotas. Vas a pasar el en los únicos encabezados vas a pasar el F I T. Y el token, y luego en cada solicitud, vas a pasar por la petición y decir, Es esto idea y token, ya sabes? registrado en alguna parte y eso es lo que vamos a hacer. Vamos a, ya sabes, almacenar esto en la charla va a ser almacenado en la base de datos. Tiene una caducidad. Por lo que después de una cierta cantidad de tiempo, ese token ya no es válido. Entonces lo primero que vamos a hacer es que vamos a crear un decorador para cada solicitud que podamos comprobar que el ya sabes, las solicitudes que estamos recibiendo es una válida y que el usuario tenga acceso a, ya sabes, golpeando los puntos finales. Entonces empecemos a trabajar en eso 15. Prueba de nuestra simple autenticación: De acuerdo, Así que empieza a trabajar en ese decorador y lo que vamos a hacer, Ace, crea , um, una carpeta add app donde vamos a tener los modelos y las vistas en la prueba para la creación de la app . Y, um, um, probando los diferentes clientes o el,ya sabes, ya sabes, el inicio de sesión del usuario y la contraseña, por así decirlo. Van a estar accediendo a nuestro a p I. Así que hagamos esa carpeta aquí, um, app. Y entonces queremos crear un ser un B y para que python sepa que este es un módulo A y vamos a crear un B Y de un decorador No bajo la mayor velocidad ¿por qué? Vamos a hacer algo que has visto en el pasado, que es decorador. Por lo que comenzamos con las herramientas funcionales e importamos envolturas. Entonces vamos a importar la petición y J hijo, si yo de matraz y que vamos a definir este decorador llamado aplicación requerida. Por lo que creamos la función decorada regular con los argumentos y argumentos de palabra clave. Y así lo primero que vamos a revisar es incluso solicitar encabezados, y vamos a llamar a este encabezado una X arriba D como lo que mencioné antes. Y si no lo es, entonces vamos a devolver un código Nair 403 el cual no está autorizado. Entonces vamos a armar esto i d viable. Toby, el que X arriba i d cabecera. Y también vamos a conseguir el secreto de la aplicación, que se va a llamar secreto de la aplicación X. Simplemente voy a imprimirlo en el en las cerraduras eso que vemos que esto es stock están funcionando actualmente. Y para esta primera prueba, lo que voy a probar es que tanto el arriba yo d, um el f i d dicho dedo Jorge como la secuencia AB se dice dedo del pie mi secreto. Y luego si no es así, entonces también vamos a devolver un mensaje aéreo. De lo contrario, devolvemos la función, lo que significa que la función seguirá funcionando a partir de ese momento. Perfecto. Entonces note que estoy haciendo aquí el arriba i d y arriba secreto que se pasa en los encabezados. Por supuesto, vamos a modificar esto con un token. Esta es la forma equivocada de hacerlo. Pero quiero que los chicos vean cómo funcionan estos potencialmente. De acuerdo, entonces ahora vamos a ir a la mascota, Um, un archivo P i y vamos a añadir el decorador aquí. Entonces vamos a decir desde AP. Ah, decoradores importan hasta requerido. Está bien. Y, um, este es un tipo especial de, como método que ofrece las vistas probables, que sólo es capaz de pasar a los decoradores, digo una lista de conjuntos. Entonces vamos a decir que decoradores iguala requeridas, y es una cosa realmente agradable, muy ver que ese matraz implementa para nosotros. Entonces no tenemos que usar el at sign aquí porque no funcionaría bien? Es una clase no es una función tan matraz. Si el traje nos da este método de ayudante, um, que podemos solo podemos pasar a los decoradores como menos fuera de decoradores. En este caso, vamos a usar sólo uno. Entonces vamos a ver qué pasa cuando tratamos de solicitar ahora las mascotas mayores. Entonces déjame aclarar esto y luego solo pon el get l ah, consigue mascotas viejas y apunta. Ahora, si envío esto, me estoy subiendo a un cuatro o tres, lo que significa que está funcionando correctamente. Y si veo los troncos, puedo ver um, supongo que no lo hizo no imprimió eso ahí dentro porque ah ve lo que está haciendo. Entonces si es si es ah por estos ninguno, entonces está devolviendo eso por tres. Por lo que no conseguimos que el dedo del pie imprima en secreto la idea arriba. Entonces eso está funcionando bien. Pero ahora digamos esos encabezados. No estoy aquí dentro, Así que mira como tenemos clave y valor. Entonces aquí, vamos a decir, X arriba I d IHS Ah, dijimos Jorge, ¿ verdad? Entonces, Jorge, es igual que el nombre de usuario. Y sólo mandemos eso. No mandemos el secreto para ver qué pasa ahora. Si envío esto, sigo recibiendo un 43 y recibo el candado. Di algo. Perfecto. Entonces ve cómo está imprimiendo el encabezado aquí, el jorge cuerpo dicho conocido por su por el secreto de la app. Entonces hagámoslo otra vez. Y esta vez también lo es. Las contraseñas equivocadas iban a decir contraseña. 123 de nuevo. Mándelo. Tengo un prohibido entonces Ahora veo el a ing ahí, pero todavía no es la combinación correcta. Entonces, finalmente, si establecemos la combinación correcta, que es mi secreto, y luego mandar, obtengo un 200 bien, um y presento el cuerpo. Veo que las mascotas me están enviando de vuelta. Um, perfecto. Entonces así funciona, como, como, la autenticación básica. Um y, ah, ya sabes, esta es una muy buena primera introducción a cómo íbamos a configurar la autenticación de autoridad A P i ah en nuestra aplicación de mascotas. 16. Modelo de la API de token y de Token de API: en esta nueva sección, vamos a empezar a construir la aplicación basada en token rial. Y así vamos a empezar a trabajar en eso usando la televisión moderna para almacenar estos APS en las credenciales y también almacenar tokens que como tú asi no, de la explicación anterior tienen una exploración, um, en esos tokens. Entonces, empecemos a trabajar en eso. De acuerdo, empecemos por trabajar en los modelos para la app, um, o los ups que van a poder, um, registrar o o acceder a los endpoints. Es donde voy a crear un modelo B y y en eso modelos gente, vamos a montar lo siguiente primero, No vamos a importar la tasa desde la aplicación, Entonces vamos a crear un modelo para la APS, y ese modelo es va a tener una siesta. Yo d que va a ser una especie de como ellos usan su nombre. Y luego también vamos a tener un secreto arriba, que va a ser una especie de como la contraseña. Y vamos a indexar as as por el up i d Hay un modelo que vamos a crear o la otra colección va a ser la colección Axis , que es donde guardamos las fichas, así que va a tener una siesta, que va a ser una clave extranjera o campo de referencia como los llamamos entre go, Vamos a tener un token que sólo va a ser una cadena y finalmente estuvo en una tienda. El vencimiento de esos tokens. Perfecto. OK, no, vamos a trabajar en el a p I para la app. Y así vamos a decir que este es el A P. me paté b y y lo que vamos a hacer aquí, vamos a tener las dos clases. Quieres interactuar con la creación up y otra para la creación Tolkien, que va a ser el acceso A B I. Y está bien si pones más de una clase AP I en un solo archivo, así que empecemos a trabajar en eso. Entonces vamos a tener, um, um, la vista de método desde pisos vistas importadas. Entonces vamos a necesitar ah petición, um, a bordo y Jason. Si yo de matraz, vamos a usar la biblioteca cripta B, y también vamos a tener el año que d dos grandes fichas. Y por último, el Delta diurno y horario para comprobar en la validación del token. Entonces vamos a importar el modelo desde AP. Um, tanto el arriba como el eje. Entonces estos son de primera clase. Es el up a p I. Y nos vamos a sentar y en ella funciona, que va a decir si la petición no tiene ningún Jason, vamos sólo a bordo que se quita a la derecha del bate. Si la petición tiene a Jason en ella Y si no lo hace, entonces no deberíamos seguir con la instancia de clase, aviación, entonces no estamos definiendo un método de post, y lo primero que vamos a comprobar si tenemos arriba i d o arriba secreto en la propia solicitud . Ahora note que ya no estamos pasando esto en los encabezados. Estamos pasando esto un supuesto cuerpo porque ahora estamos haciendo de la manera correcta y algo que verán aquí. Um, voy a empezar a usar en código de error. Y esta era los abrigos suelen ser los hago cuerdas fuera de palabras mayúsculas con en este curso en medio, para que sea como una constante y el cliente tendiendo comprobar esos errores. Entonces si no tenemos arriba d o arriba en secreto, entonces sólo vamos a devolver un error. Entonces vamos a comprobar si ya existe la APP. Entonces vamos a golpear el mongo para ser para conseguir objetos que tengan eso mismo arriba i d Si el arriba existe, entonces vamos a volver al aire diciendo que el arriba yo d ya existe me di cuenta, estaban usando Cold Air 400. Ahora tenemos lo nuestro más, Así que estamos bien para ir. Vamos a crear las credenciales. Y una cosa que voy a hacer aquí, no voy a guardar el avión de pasaporte porque esto es algo así como pasaporte regular. Me van a descifrar para que si alguien piratea maliciosamente la base de datos, no tengan acceso a la a las contraseñas reales. Y deben ser siempre tu práctica cuando estás trabajando con contraseñas, aunque sus contraseñas de app on ah, en un servidor a p I. Y ahora, finalmente, creamos el objeto app con el up yo d y nuestra contraseña hashed, y luego finalmente devolveremos un resultado bien, vuelta al cliente y notaré que no estoy devolviendo nada aquí. Sólo digo resultado. De acuerdo, entonces eso va a ser un 200 ahora. En lo siguiente cuando trabajo es en el lado token de las cosas. Entonces empecemos a trabajar en eso se va a llamar el acceso A P I y donde hacer lo mismo . No lo hemos metido. ¿ Qué cheques? Si la solicitud Jason está vacía entonces devolvería un 400. Ahora, definamos un método de post. Ahora, el Post aquí va a ser para crear un token. Entonces vamos a comprobar si no hay hasta yo d ni hasta secreto en el cuerpo. - Y ahora voy a conseguir, um, um, un mensaje de error para el cliente. A continuación, voy a comprobar que exista la APP. - Y entonces de lo contrario significa que encontré la app I d Primero, sólo voy a devolver el error ahí cuatro o tres. Y aquí voy a generar el token. Si Thea, si la contraseña es, es correcta, Así que vamos a revisar con la biblioteca cripta B y tomar eso eso eso es igual de dedo nuestra base de datos sobre el secreto arriba que regresaría de la base de datos. Entonces si es si es si pasa, entonces existimos con el poco Los tokens existentes provoca el que vamos a decir que es el nuevo válido para esta app. Entonces solo voy a conseguir todos los tokens de acceso que coincidan con esta aplicación y los términos de labio. La próxima vez que genere un token usando la biblioteca U I. D, voy a establecer la hora de los tokens, Toby. Ahora, y como podemos decir, vamos a usar el tú para ver. Y cuando dije que segundos y microsegundos Toby cero sólo estaban interesados en horas y minutos. Y vamos a fijar la caducidad. Toby, dentro de 30 días. Por último, guardo estos único nombre de base de datos cuando guardé esto y quiero generar el, um RFC 3339 ¿Cuál es Theo? Extender. Errred para un p A s A p hielo, también. Perdón. Tiempo de retorno para manoplas en ah, en un PS. Por lo que debes usar esto siempre que quieras. Yo uso ah, daytime's on your a p I. Así que vamos a devolver el token y cuando caduque. Y aquí tenemos una más. Entonces, ¿pasaportes? ¿ Qué no es correcto? El secreto arriba. Entonces sólo vamos a decir, um devolvió un código de error con credenciales incorrectas y volver al cliente con eso para tres Ahí. De acuerdo, entonces lo siguiente que vamos a hacer es que vamos a regresar o trabajar en las vistas fuera de este un punto p i n 17. Vistas de la API y decorador de tode: De acuerdo, Entonces el siguiente paso que vamos a hacer aquí es crear las vistas B y para nuestra app, um, endpoints. Y con vistas ser ¿por qué? Y eso va a ser bastante similar a las otras cosas que hemos estado haciendo. Vamos a, um, hacer un plano. Entonces importamos el blueprint del matraz, y vamos a importar esas dos clases del a p i dot b y creamos nuestro blueprint, que va a estar arriba, arriba. Después configuramos una vista usando el método ask you para vistas plausibles con el AP AP I y finalmente vamos a agregar las reglas. Por lo que el 1er 1 va a ser el post para crear una app. Y recuerda, una siesta. Es como un cliente, como un nombre de usuario y contraseña. Y luego vamos a tener vista de acceso, que es Thea Other Ah, una p I. Que va a ser la generación de tokens. Entonces vamos a agregar la regla y vamos a llamar a eso el token de acceso slash de APS. Y te has opuesto a eso cuando quieres crear un nuevo token. Perfecto. Entonces eso es eso, Um, ahora necesitamos agregar este blueprint a nuestra cuota de solicitud ¿Por qué? Entonces vamos a importar, um, desde vistas importar hacia arriba, y luego vamos a registrar eso con arriba aquí arriba. Está bien. Con esto, podemos empezar al menos creando y, um, generando tokens. A pesar de que no estamos revisando, necesitamos hacer algún trabajo en los decoradores para comprobar que el token es válido. Entonces sigamos adelante y ah, y trabajemos en eso. Entonces vamos a ver a los decoradores B y Y vamos a estar en cualquier momento aquí por comprobar la validez de las fichas. Y también vamos a necesitar los modelos up para recuperar el AP y el en el exceso de tokens . Entonces voy a borrar esto, y quiero decir arriba que d es Theo la X arriba yo d Y todo lo demás aquí va a ser una cosa nueva, cosas nuevas. Entonces vamos a conseguir el token APP, que va a estar en los encabezados. Y ahí es cuando pasamos culo ex app token. Y yo comprobaría si Thea pi d es ninguno o el token de arriba es ninguno devolverá un cuatro o tres. Lo siguiente vamos a comprobar si existe la app um I d. Y si no encontramos uno, entonces vamos a devolver un 43 también. Y por último, vamos a agarrar la ficha, y luego vamos a decir Si no hay ficha que hayamos encontrado, entonces regresa el piso tres. Entonces vamos a hacer el, uh, el token de acceso. No es lo mismo que el token de aplicación que encontramos. Después lo devolvemos por tres un oleaje. Y finalmente comprobamos si el token está caducado. Entonces la forma de hacerlo es comprobamos si es más bajo que el diurno que veas ahora. Y si ese es el caso, entonces no vamos a devolver una cadena vacía. Pero en realidad no nos devuelven un mensaje de error con un 43 Ok, perfecto. Entonces sigamos adelante y probemos esto en el en la APP 18. Instala bcrypt y tode prueba: De acuerdo, La última lección. Contamos con nuestras vistas y el decorador para poder registrar el ábside y también poder comprobar, generar y revisar los tokens para el eje. Entonces ahora sigamos adelante e instalemos el pastel be crit, que solíamos incluir las contraseñas para luego configurar nuestro A cartero, uh, prueba para ver que todo está funcionando correctamente. Entonces vamos a hacer eso. De acuerdo, vamos a un requisitos txt. Y vamos a añadir una nueva biblioteca aquí llamada pastel be crypt, y eso va a estar garabateando para, um y guardar eso. biblioteca aquí llamada pastel be crypt, y eso va a estar garabateando para, Entonces, ¿cómo instalas, um, bibliotecas después de que el contenedor acoplador esté configurado los ojos? Bueno, solo necesitas, um, um, llamado peep instalar requisitos desde el exterior. Entonces contra aquí el contenedor arranca porque no encontró gran cripta en eso, un p I p y mintiendo tres, que estaría justo aquí en Port Secret. Entonces, um, solo necesitamos dedo del pie para hacer eso para instalar esa biblioteca. Entonces lo que necesitas hacer es que en realidad solo llames al doctor compuesto build y lo que esto lo va a hacer. Va a reconstruir los, um todos los contenedores. Pero la base de datos uno no va a cambiar tus datos en realidad se van a mantener sin ninguna modificación. Y el, um, el contenedor de aplicaciones es el que va a estar instalando la nueva parada, pero verás que va muy rápido porque es que no está generando originando todo el asunto. Déjame despejar la pantalla para que ustedes vean esto mejor, para que Doctor pueda jalar, derramar y ver que casi se queda todo. Simplemente va directo a instalar requisitos. Y ahí dentro vas, Uh, ya está hecho. Por lo que tenemos pastel de lucio ser cripta instalado. Ahora, podemos seguir adelante y correr, ser el contenedor otra vez. Entonces sigamos adelante y hagamos los puntos finales del cartero. Entonces vamos a crear una nueva carpeta aquí llamada, uh, app y esos van a ser los puntos finales? Y, um, cuando un cierre, esto no ahorra. De acuerdo, entonces lo primero que vamos a hacer es que vamos a posar ante el anfitrión local y va a estar arriba y ah, vamos a comprobar cuál debe ser el valor. Entonces con post, vamos a decir que vamos a necesitar hasta i d y tener secreto como el Jason Payload. Entonces vamos a tener cuerpo, uh, crudo. Dije que seré Jason. Y cuando tengo i d Así que digamos que esta es la app móvil que va a estar accediendo. Y se puede pensar en el absceso diferente. Ya sabes, diferentes tipos fuera de dispositivos o si eres una cosa P I focos. En realidad, la gente va a ser un putting. Son como su nombre de usuario y contraseña. Um, Entonces, por ejemplo, en la caja fuerte, tu, um a, uh, comercio electrónico, porque es un mejor. A lo mejor yo una tienda de comercio electrónico. Eso es un es Petco. Entonces el up i d sería Petko aquí, y tendrían que elegir su propio secreto. Um, y el otro creo que van a elegir thea up secret. Entonces pasemos uno aquí, y vamos a llamar a esto, uh, uh, prueba me dijo No, que para iniciar sesión o generar un token, vamos a tener el móvil y la prueba. Entonces, vamos a guardar eso. Y esto va a ser, um, recuerda la forma en que estábamos. Se pone bien. Yo sólo quería comprobar el formato. Entonces vamos a salvar este post de culo, crear nuevo arriba, y luego lo vamos a guardar en la carpeta pets ap i app. De acuerdo, así que vamos a revisar aquí. Está funcionando bien, y vamos a publicar, y dice que no encontró el que veo. No, creo que es APS. Por lo que enferman vistas su ábside. Correcto. Entonces yo deletreo esto, tal vez guarde eso y luego mandar de nuevo. Impresionante. Entonces tenemos alrededor de 200 bien? Y el resultado está bien, que creo que es lo que pasa si todo salió bien, que es justo aquí. Entonces generamos que Ah ah ah ah hash pasado tablero. Y Ah, y nosotros más f um, guardemos eso en el mongo db. Entonces vamos a ver si ese es el caso. Entonces vamos a entrar en mongo db. Entonces para que comprobemos eso, vamos a abrir una nueva pestaña aquí, y básicamente vamos a hacer qué, Dr. Excepto que no salgo primero. Antes de eso, tenemos que revisar. Pero el nombre del contenedor es ahora. Ya ves cómo, um, aquí que la imagen se llama Betsy FBI Web, pero el nombre del contenedor, en realidad son mascotas. AP I Web Ron 15. Eso se debe a que estamos ejecutando esto con puertos Web. ¿ Recuerdas cómo ejecutamos esto con la web de servicios deportivos? No estamos de paso por aquí. El nombre. Entonces, um, Docker básicamente selecciona un número para nosotros, y creo que se incrementa uno por uno. Por lo que necesitas tirar el cheque el nombre del contenedor antes que tú. Emitiste este comando. Um, también puedes hacerlo con un contenedor, yo d Pero ya sabes, depende de ti. Entonces vamos a hacer, doctor, doctor, excepto yo t y el nombre del contenedor. Y luego vamos a poner aquí cualquier comando que queramos usar en este caso, vamos a hacer mongo con el host mongo db. Entonces así es como te conectarías a mongo db desde el servidor de aplicaciones. Entonces si escribo eso ahí dentro Ah, parece que he escrito mal. Entonces tal vez no es la edad su anfitrión. Déjame comprobar eso. Correcto. Es anfitrión. Entonces déjame despejar la piel y su anfitrión así. Ahí vas. Por lo que ahora estamos conectados a nuestra instancia entre go db, puedes demostrar que las abejas y tú tienes mascotas. Ap I ahí. Entonces usamos eso es un P I. Y luego te mostramos colecciones y ya ves como tenemos app ahora. Entonces esa es nuestra colección up que creamos desde el punto final que acabamos de hacer. Entonces si lo hago, se levantarán. Encuentra Ahí lo tienes. Entonces ya ves como tenemos un i d. Eso se generó. Eso es entre sería i. D. Esta es la aplicación i d s móvil y el secreto. Como se puede ver aquí, está codificado por cripta B. Entonces eso es perfecto, porque sabemos que es prueba, ¿ verdad? Es, um es que la prueba de obsequios, pero en la base de datos, no se almacena un historias de estado, ingenio acerbio. Y esta es una buena práctica para siempre. Si estás lidiando con contraseñas y o cosas por el estilo, definitivamente no debes almacenar estas cosas en texto plano, sino usar la gran biblioteca de criptas. Impresionante. Entonces, um, sigamos adelante y generemos un token, y voy a dejar esa ventana ahí en caso de que necesitemos revisar otra cosa. Um, así que un nuevo endpoint aquí, así que vamos a, um, duplicar esto y va a ser, um recuerdo los waas de endpoint. Veamos en vistas. Está bien. Acceso APS toking. Por lo que APS actúa de avivamiento Perfecto. Y qué necesitaban, uh, publicar. Yo creo que fue el de decir aquí fue el alborotamiento y secreto. Entonces es básicamente lo mismo. Podemos pasar esto como lo tenemos ahí, pero vamos a guardar eso, um, guardar. Y vamos a renombrar esto para publicar crear nueva actualización hasta hablar. Impresionante. Entonces hagamos ese post y veamos qué obtenemos. Impresionante. Entonces tenemos 200 bien? Y tenemos caduca 2017 generar 26 que es a un mes a partir de ahora. Y entonces el token es este tú i d. Y otra vez si vamos a nuestro munger a ser y ahora sí mostramos colecciones, veremos que ahora tenemos acceso ahí dentro. Y si hago db acceso encuentra ahí. Tengo el i. D. El objeto i d. Ah, ¿ cuál es el acceso? No, la clave externa de la app. Correcto. Y este objeto yo d pertenece o se correlaciona con éste de aquí. Y el token es tejido. Yo d y caduca y veo como es Es tienda ITS en un I o u I s o fecha. Porque Munger para ser es capaz de manejar eso que lo forman tan impresionante. Tenemos nuestra generación de tokens. Y entonces ahora lo que queremos hacer es que por cada, um, por cada solicitud individual, vamos a necesitar pasar el, um esto hablando aquí. Entonces dejemos ese top abierto. Y vamos a tratar de hacer un ahora conseguir mascotas viejas y punto. Pero ahora vamos a necesitar usar el, um, en los encabezados. Vamos a necesitar usar esto,Ya sabes, Ya sabes, este token y el up i d Pero vamos a seguir adelante y copiar esto y ellos consiguen un get all pets in point. Vamos a tener una llave llamada X Up I d. Y eso va a ser móvil. Y entonces el token X up va a ser el token que acabamos de copiar y pegar. Um, vamos a revisar por un momento sin pasar esto y a ver qué pasó. Entonces si soy dueño click que esos encabezados no van a ser enviados y podemos comprobar qué pasa ahí y ver que me dan ahora. Ah, 43 prohibidos. Y eso significa que esto se dirige a los decoradores. No es conseguir el token ideal para arriba. Ahora, vamos a ver qué pasa si pasé el arriba i d. todavía me dan un cuatro o tres, y luego veamos si hago la ficha equivocada. Entonces en lugar de e. al final aquí, sólo voy a decir f Bien, manda. Lo mismo. Tengo un prohibido. Eso significa que, um, ya sabes, esto es estar revisando el en la aplicación, y luego comprueba que el, um el token no es lo mismo, um, ya que hablan de eso tenemos aquí. Entonces eso es un 43 también. Ahora, finalmente, es rápido. El token correcto. Entonces manda a ver. Yo consigo un 200. ¿ De acuerdo? Y ahora veo la lista fuera de caricias aquí, como se esperaba. Tan perfecto. Tenemos nuestra autenticación, um, capa incorporada. Y, uh, ahora vamos a empezar a construir algunas pruebas para estos. Por esta pieza de la de la A P I 19. Construir las pruebas de la aplicación: Entonces ahora que tenemos nuestro sistema de tokens APS sin sistema de autorización, sigamos adelante y construyamos pruebas porque hasta ahora no hemos construido ninguna prueba. Y va a ser un buen dedo de introducción cómo ponemos o creamos pruebas para AP, ojos en general y específicamente para pisos. Del FBI Así que empecemos. De acuerdo, entonces vamos adelante y creamos las pruebas. Ah, aquí el archivo prueba B y, y yo voy a copiar y pegar, porque esto es algo que has visto en otros cursos fuera menos cursos que han hecho, y es más o menos lo mismo. Entonces configuramos, um, um, una fábrica de aplicaciones aquí. Configuramos el motor mongol, obtenemos la unidad de importación B, pruebas, importación y algunos otros archivos. Y también estoy importando de arriba modelos suceden eje, y me estoy poniendo el más tiempo para ser host desde la configuración. Entonces creo mi prueba APP. Ah, caso de prueba unitaria, que ah típicamente tiene un método de creación que me permite configurar rápidamente la aplicación en sí. Entonces hago una configuración que, um, um, solo usa ese método y crea una nueva aplicación. Y luego tengo un derribo Ah, que se pone el televisor actual que acabo de crear y deja caer esa epopeya Porque, como saben, queremos empezar de cero en cada prueba. Entonces esto, um, armar y derribar van a ser llamados desde cada prueba individual. Por fin hemos creado un diccionario de aplicaciones con un ya sabes, ficticio back line y ese secreto que vamos a estar pasando al a los diferentes ah, casos de prueba. Y como pueden ver, devuelvo un Jason volcado. Esta es una, um, una función fuera de la biblioteca de Jason que te permite crear un objeto Jason a partir de una ah, ya sea una cadena o un, um o en este caso, un diccionario que estoy creando usando el pitón dicked uhm ki pupilo o función. Entonces ese es el comienzo de la misma. Y entonces voy a empezar con la primera prueba real, que es el creador hasta la prueba. De acuerdo, entonces nuestra primera prueba va a ser la prueba de creación de aplicación, así que sigamos adelante y hagamos eso. Entonces creo un registro básico que va a usar el diccionario de aplicaciones que creamos en, um en el, um en la propia clase. Entonces solo publicamos eso al ábside y apuntamos con los datos fuera del diccionario. Y este es un muy importante tenemos que pasar el tipo de contenido en esta solicitud. Y esa va a ser la aplicación, Jason. Entonces la aseveración aquí va a ser que el código de estado es 200 eso significa que la aplicación waas creó correctamente Vale, ahora simulemos que tenemos un secreto de aplicación faltante y comprobemos que devuelve un mensaje de error . Um, así que vamos a tener el que vamos a recrear el desde la aplicación, um, diccionario, pero vamos a estar perdiendo la parte secreta de la misma. Y ahora vamos a publicar al ábside y punto, y estamos pasando el diccionario arriba Eso no tiene el secreto. Y finalmente, aseveramos que le falta el up i d o secreto, y ese es el mensaje de aire que se está pasando de la A P I p. Y Perfecto. Está bien. Y el último que vamos a hacer es si estamos, um, um, repitiendo el registro. Entonces vamos a decir lo mismo. Envía el mismo diccionario up. Entonces configuramos el diccionario aquí, ponemos la obligación de tipo de contenido, Jason, y deberíamos levantarnos. Yo d ya existe. De acuerdo, así que sigamos adelante y probemos esto o ejecutemos las estadísticas y veamos cómo se hace esto. Entonces primero voy a guardar esto, y debería cerrar algunos de estos grifos, y voy a crear un A pruebas de nivel superior ser por qué? Ese va a ser el corredor. Y ya has visto esto s voy a pasar rápido por él. Um, dijimos primero el camino. Entonces vamos a importar prueba unitaria y luego importar de arriba probar la prueba que acabamos crear y luego ejecutar pruebas unitarias. El principal. Entonces, ¿cómo realizamos la prueba? Bueno, vamos a tener que averiguar cuál es el nombre del Docker, Uh, contenedor. Entonces vamos a revisar eso. Por lo que gasta un p i Web, Ron 15. Y voy a hacer lo siguiente Dr ex sec I t pets ap I Web run 15 que es el nombre del contenedor aquí. Y yo solo tecleo python tres pruebas B y Así que eso debería ejecutarse. Eso es para que vean cómo va eso. Perfecto. Entonces tenemos algo de deprecación. Advertencia. Jason se separó. Consigue a Jason en su lugar. Eso es desde dentro del, um el matraz, um, paquete en sí del trabajo, así y así obtendrá uno de Mongo Engine, que es de nuevo una advertencia de deprecación. Pero vemos que aquí tenemos un pequeño punto y se ha corrido una prueba en una segunda. Entonces eso funciona perfectamente divertido. Tan grande tenemos nuestra primera prueba corriendo y ahora sigamos trabajando en el en el abscesos. 20. Pruebas de Token: Entonces sigamos adelante y sigamos trabajando en el en la prueba. Entonces ahora vamos a hacer la prueba de algún token. Entonces empezamos a hacer eso. El 1er 1 que vamos a hacer es vamos a probar a la generación parlante. Entonces vamos a publicar Tuapse usando el diccionario AB y simplemente geniales están arriba nuestra aplicación inicial. Y lo siguiente que vamos a hacer es crear un token real, y lo estamos haciendo a través del token de acceso y el punto, y luego vamos a agarrar el token del, um del retorno, Jason. Pero mira, en este caso, estamos cargando los datos que se están devolviendo sobre el valor devuelto sobre el valor de respuesta . Lo estamos grabando con deber si ocho. Y entonces estamos consiguiendo la ficha. Um ah. Tomó en propiedad o la ficha, uh, pieza del Jason. Eso es gratis a cambio. Um, y la prueba aquí dentro va a ser que están hablando. No lo es. No así. Si esa ficha es, no lo es, Entonces eso significa que el Tess ha fallado. El siguiente en prueba que vamos a hacer es que vamos a probar que el si nos estamos perdiendo el secreto arriba , entonces que vamos a comprobar que el token no funciona. Y también vamos a comprobar si el secreto arriba es incorrecto. Y así estamos pasando el mal, ya sabes, arriba secreto y arriba i d. O en el caso en este caso, el 1er 1 es el Es el nos estamos perdiendo el secreto arriba. Y en el segundo caso, nos falta el o reporte que pasa A incorrecto. Absolutamente. Por lo que este 1er 1 ha sido un retorno faltando hasta i d. Europe secret, y el siguiente va a decir credenciales incorrectas. Lo siguiente que vamos a probar es ver que el token funciona, pasando por alto el token correcto. Y deberíamos salir 200 ahí. Y también vamos a probar si pasamos el token equivocado. Estamos tratando de poner a las mascotas en punto con una ficha incorrecta, Así que deberíamos conseguir un cuatro o tres de esa solicitud. El último test va a ser un token de caducidad. Entonces vamos a, um, tratar de hacer un acceso de 31 días a partir de ahora y vamos a probar ahora con el con el token existente , y eso ya estará vencido. Entonces deberíamos hablar. Caducido en el en los datos. Entonces eso es todo. Eso son todas las pruebas que iban a estar construyendo para la APP. Adelante y ejecutemos las pruebas. Entonces sigamos adelante y vayamos a la terminal cuando una clara la pantalla aquí y recordemos que tus, uh, contenedores docker deberían estar funcionando tanto e um, el Munger para estar en la aplicación. Entonces vamos a lastimar. Adelante, Doctor. Exactamente. I t pets AP I. Weber on 15 que es el nombre del contenedor corriendo Bison. Tres Pruebas P. Y. Perfecto. Otra vez. Recibimos algunas advertencias de deprecación, pero nada de qué preocuparse. Ah, pero dice que corrió dos pruebas en cuatro segundos y todo salió bien, así que eso es todo. Eso es por eso por el ábside. Y ahora deberíamos empezar a trabajar en las tiendas y apuntar para el alma del FBI. Empecemos a trabajar en eso 21. Comenzar el punto de tienda: acabamos de terminar de trabajar en el ábside y el punto. Y ahora vamos a empezar a trabajar en el punto final de la tienda, que va a describir las tiendas físicas donde vamos a tener nuestras camas disponibles y eventualmente vamos a tener mascota asignada o asociada a esto con estas tiendas. Entonces empecemos a trabajar en las tiendas A p I. Y por supuesto, comenzaremos con los planos de cuatro tiendas. Entonces veamos cómo hacemos eso. ¿ De acuerdo? Lo primero que vamos a a a es que vamos a crear una nueva carpeta aquí llamada Mascotas. Es decir, tienda lo siento, tienda, y vamos a crear un NDP. ¿ Por qué? Para que podamos importar Esto es un módulo por teléfono, y lo siguiente que vamos a hacer es tener unas vistas, B. ¿Por qué? Y vamos a hacer algo parecido a lo que hemos estado haciendo antes. Qué ojos para crear la tienda un archivo p i, um, y luego crear un plano a partir de él y luego almacenar las vistas para, um, las tiendas y apuntar para el get y post para las tiendas así y así como vamos a enable get put y elite cuatro story the Esta es la primera vez que vamos a estar usando put in the lead. Entonces eso va a ser bastante emocionante Port. Se va a utilizar para actualizar las tiendas y el plomo va a ser para el plomo en las tiendas. Entonces permítanme decir eso para que esas sean las opiniones. Y vamos a seguir adelante y crear las modelos B y y él va a ser algo bastante estándar también . Entonces vamos a tener la tienda con un externo me iba a tener un barrio, una dirección de calle, un estado de la ciudad y un código sip y el número completo y vamos a tener en índices en externos como el ahora Una cosa a notar aquí es que, um, en las mascotas cuando estábamos teníamos las mascotas. Inicialmente, claro, estamos almacenando esto de la base de datos, pero teníamos, como este yo d, que era 123 Ahora aquí podríamos tener X Tex vuelta como el ser el manga para ser I D. Pero es realmente no es una buena práctica de seguridad para exponer tu ah internalizado el tu como mongo db i d. O peor aún para mi secuela, yo d Así que siempre usa algo como esto como un yo externo d que vas a estar generando. Y de nuevo, te vamos a estar usando. ¿ Te ideas para eso? Pero esto es una cosa muy importante, como la seguridad que siempre debes estar atentos es tener siempre extra como estos cuando quieres, um, permitir que la gente seleccione esos objetos. 22. La biblioteca de esquemas de JSON: Ahora, conforme empezamos a trabajar en la historia p I Una cosa que fue específicamente desafiante para mí waas la pieza de validación. Entonces ahora tenemos una tienda muy compleja, una modelo que tiene todos estos campos,ya sabes, ya sabes, código de calle y siéntate y barrio y cosas así. Y yo quería ver cómo podía, um, um, validar estos y un enfoque que pensé en hacer Was de alguna manera hackeando wt t forms , pesar de que no son técnicamente formas que estamos validando tal vez mirando del pie su clases de validación y hardwire que. Pero entonces empecé, ya sabes, pensando en otra biblioteca, que es bonita, Es bastante útil, y sería un buen ajuste para este proyecto. Y creo que es Es realmente bueno en general, también, también, si tienes, como, como, objetos Jason y esas bibliotecas llamaron, uh, Jason Schema, y vamos a tomar un rápido míralo. Um, una cosa que notarás es que Jason Schema se puede instalar en un suministro de la biblioteca . Y, um, si miramos el ejemplo aquí, es perfecto para una validación A P I, Um um programa, porque podemos, um, tenemos un tipo muy flexible de como definición de esquema, y podemos definir, ya sabes, que las cosas son cadenas, por lo que son como números y se requieren cosas, como se puede ver en este ejemplo. Por lo que aquí hay muchos ejemplos por los que pasan. Pero me voy a Corea. Ejemplo rápido para que nos fijemos y te introduzcamos en el esquema Jason. Mi biblioteca. Antes de hacer algo, sin embargo, necesitamos dedo del pie en esa biblioteca dedo del pie un requisito 60. Entonces vamos a tener esquema de Jason, um, con esa versión ahí. Y necesitamos instalar a ese dueño en nuestra hija, um, contenedor. Entonces vamos a construir los contenedores una vez más. Entonces déjame despejar la pantalla, e instalará el esquema Jason. Mi biblioteca. Genial. Entonces podemos volver a ejecutar el contenedor, y es seguir adelante y crear un archivo rápido aquí que lo hará. No lo estaría almacenando en el, um, en el repositorio, pero sólo para que ustedes lo vean? Entonces, um, esto como yo esquema Jason me vería y déjame poner eso un poco más dedo del pie la izquierda . Um, así que tenemos que importar de Jason maquinando, pobre validar. Y entonces podemos tener un esquema fuera de un objeto contra el que queremos validar. Entonces en este caso, este es un tipo de objeto, y las propiedades son precio, nombre y externo, como el precio y nombre requerido. Entonces de estos campos de estas propiedades, una vez requiero nuestro precio y nombre preguntados ahí, descritos aquí y note que tenemos un perfecto, um, patrón para ti idea. Entonces estamos esperando, ya sabes, los ellos la entrada o el objeto Jason para tener ese formato y luego la forma en que tú , um, um, validaste es que acaba de llamar validar? Pusiste el objeto. Entonces este es nuestro derecho aquí y tú lo comparas con el esquema y obtendrás, um, um, ya sea un, sabes, un éxito u otro mensaje. Entonces vamos a correr eso desde rápido, así que me voy a decir Oh, lo siento, lo tengo. Ahí vas. Tengo una pelea en tres, y vamos a decir Valle test B Y. Uh, entonces supongo que ahora tiene un nombre diferente, ¿ verdad? 16. Perdón. Ah, eso es así que ahora son 16. De acuerdo, Entonces no obtuve ninguna respuesta, lo que significa que validó. Pero por ejemplo, digamos que no paso huevos aquí y guardo eso y luego lo vuelvo a ejecutar. Ver, obtengo ah, um validando requerida en esquema y, uh, y dice precio requerido y nombre tipo óptica. Entonces básicamente, el, ya sabes, el error de validación que puedo agarrar de ahí es que el nombre es una propiedad requerida. Entonces puedes ver que es una librería muy flexible, y la vamos a estar usando para una tienda en punto y eso Vamos a definir ese esquema para la tienda. Entonces veamos cómo hacemos eso. Entonces sigamos adelante y creemos nuestras tiendas, Chema Y pongamos esto de nuevo aquí y voy a llamar a este archivo el esquema p y Y aquí está el esquema. Entonces tengo Es un objeto tipo, y luego tenemos propiedades Calle Barrio, dirección Ciudad Estado y ver cómo se me requiere que sea una mayúscula de dos letras. Esta es una expresión regular. Creo que hemos visto un poco fuera de eso en el pasado. También tenemos un núcleo sip, que se supone que son cinco números, y también tenemos un teléfono que tiene una especie de como el código de área y luego tres dígitos y luego cuatro dígitos con guiones en el medio. Entonces si algo no coincide con esas cosas que iban a conseguir un aire y estoy diciendo que viejo de todas las propiedades se requieren así que ese es, um, ese va a ser el esquema que vamos a estar usando. La otra cosa que voy a estar usando aquí dedo del pie facilitar la A P I. ¿Está el concepto fuera de una plantilla? Entonces otra vez? Porque es un objeto tan complicado. No quiero ser como construir los objetos Jason cada vez. Entonces lo que voy a hacer es que voy a crear una plantilla b y con dos funciones. Uno va a ser este objeto de tienda que si pasas la tienda del motor mongol o objeto mongo db a ella, regresará. ¿ Conoces esto muy bien? Um, especie de direccionado o formateado, um, objeto Jason que tiene el i. D. El barrio ciudad estado, etcétera. Y puedo hacer cualquier tipo fuera como transformaciones ahí. Y como pueden ver, también ya estoy teniendo una sección de enlaces ahí dentro. Entonces eso significa que cada vez que necesito cambiar cualquiera del formato Jason. Yo lo puedo hacer aquí muy fácilmente. Y también para las tiendas cuando tengo las tiendas, Um, como un like a lista de consultas. Voy a hacer lo siguiente y nunca regresaré A Voy a tener un array frigoríficos, y voy a devolver las tiendas de vuelta al usuario. Ahora, una cosa es que este es un estado temporal. Voy a cambiar esto después. Bueno, ver por qué es entonces cuando empezamos a usar la imaginación. Pero por ahora, vamos a vivir esto. Ah, algo así como un Marcador de posición al que volveremos. De acuerdo, entonces creo que estamos listos para empezar a trabajar en el en la A P I específicamente. Entonces hagámoslo. 23. El archivo de API de tienda: De acuerdo, ahora que hemos visto a Jason Schema sobre cómo va a ser muy útil para nosotros validar el usuario o la entrada del cliente en la A P I. Ahora sigamos adelante y empecemos a trabajar en la A p I para las tiendas. Entonces, empecemos. De acuerdo, Así que sigamos adelante y creemos el archivo A P I y vamos a, um, hacer algunas importaciones aquí. Entonces vamos a importar matraz, vista de método, Y, um, algunos de los elaborados que hemos visto desde banderas como el Sol. Si escribo solicitud a bordo de la plantilla de render también tú d y Jason y estos últimos son nuevos en términos off, como nunca los hemos usado. Entonces uno se llama el borrador de Jason Schema para validador, y el otro se llama Jason Schema dot exceptions import best match, Así veremos cómo las usamos en un poco. También tendremos a los decoradores thea. Ah, el up requería ah, importar los modelos de la tienda y otra vez, esto último a un esquema de tienda. Mi esquema de importación y plantillas de tienda, objeto de la tienda de importación y objetos de las tiendas son algo así como un nuevo uso. Pero como puedes decir, esto está relacionado con las plantillas de tienda que tenemos aquí. Um, donde tenemos las diferentes plantillas tanto para el objeto de tiendas individuales como para el, ya sabes, el objeto de tiendas plural. Y también tenemos el del esquema de tienda, y vamos a importar el esquema el. Vamos a comparar la entrada de declinación con esto con el esquema. Entonces veamos cómo hacemos eso. Entonces aquí, vamos a almacenar. Vamos a estar con la tienda de clase ap I con su decorador. Y de nuevo, vamos a comprobar si hay, um ya sabes, no hay petición, Jason. Después nos embarcamos a bordo de 400. Si no es una petición de get, entonces vamos a pasar por el método get, um, um,. Y si hay una historia d siendo pasada en el método get, entonces sabemos que vamos a devolver el objeto individual de la tienda. Por lo que sólo pasaremos por abajo la ah, la respuesta como el objeto de la tienda de la plantilla. De lo contrario, vamos a conseguir todas las tiendas. Entonces eso es lo más ahí dentro. Y entonces sólo vamos a, uh, uh, devolver las tiendas de la de la consulta al objeto de las tiendas. Y como dijimos antes, esto es como un proceso de trabajo, pero sólo vamos a devolver esos, um esos resultados de una manera muy lineal. Pero haremos un mejor trabajo de eso cuando hagamos la paginación, que es algo que realmente necesitamos estar usando en los ojos AP. Pero cualquier caso que tengamos si hay una tienda i d. obtenemos esa historia d Si conseguimos la tienda, regresamos ese Jason, si respondo, que es el resultado está bien, y entonces la historia en sí es thes store object de la plantilla que va a ser esta cosa aquí y ah lo demás fuimos piedra un 44 lo que significa que no nos encontramos con ellos que esa historia t de otra manera, nosotros si se la dan para conseguir y es tiendas porque no está en una historia El swing pasado, se les devolvieron todas las tiendas. Entonces ahora veamos qué hacemos con el Post y el Post. Vamos a conseguir la, um, la tienda Jason de la petición, Jason. Y aquí estamos usando este nuevo método llamado el error. Ah, mejor caída de partido para sobre ello validador. Y esto sólo va a, um Ah, va a devolver todos los errores que obtenemos de la comparación fuera de ese esquema con la historia Jason que está siendo eso es un callejón sin salida para nosotros. Y si hay un aire, entonces devolverá un mensaje estrecho con el con el mensaje de error que el validador de esquema está pasando con un 400. De lo contrario, las cosas están bien. Entonces vamos a crear un objeto de tienda con el vamos a crear un yo externo D. Um, sólo vamos a almacenar la dirección real del barrio ciudad, estado, zip y teléfono que se ha pasado en la solicitud. Entonces guardamos eso. Y luego tiramos de nuevo a respuesta con el objeto de la tienda, que, de nuevo, es la plantilla y la tienda, Um, que acabamos de guardar en el mongo DB y devolvimos un dos a uno, lo que, como podría recordar, significa que el Post fue exitoso y estaban devolviendo contenido al usuario. Entonces, uh, esta cosa de aquí, por supuesto, siendo lo nuevo. Ah, es que ya sabes, puedes investigar un poco más sobre qué? Esto, um, lo que todo este tipo de cosas me involucra. Pero es más o menos que lo usamos igual cada vez. Entonces solo puedes usar esta copia y pegar esto y solo rápido el, um la entrada del cliente, el objeto Jason dentro de estos errores analfabetos um, método que, um eso va a pasar por los errores si el, um si el, ya sabes que la plantilla Jason Schema no coincidió con la que usan varios pases. Entonces eso es eso. Y vamos a crear solo entradas ficticias para el put y la elite, que implementarán más adelante. Entonces esa es la A P I. B y. bonitas, Cosas bonitas, bastante sencillas. No demasiado complicado. Y así sigamos adelante y probemos esto. 24. Prueba de punto de End de la tienda: De acuerdo, así que sigamos adelante y probemos esto. Vamos a crear una nueva carpeta aquí, fría, uh, tienda. Y voy a Vamos a clonar el del post aquí, el post mascotas y apuntar y ponerlo aquí en la tienda. Vamos a renombrar esto, y se va a posar tienda, o más bien, presumir, crear tienda. Está bien. Y en esto tenemos los encabezados. Um, necesitamos agregar la aplicación en el en el, um, sí, tengo eso aquí dentro. Debería haber copiado esto. A lo mejor, pero tenemos el X paso arriba yo d Así que vamos a crear esa mezcla. Yo estoy y es móvil. Y luego la X hasta secreto. Oh, no, está hablando, token correcto. Y creo que todavía tenemos el mismo token. Pero si no, el mundo generará uno nuevo. Ponen eso aquí. ¿ Dónde va esto? Ahí vas. Está bien. Y va a ser publicación tipo contenido. Jason. Y aquí necesito poner el teléfono del vecindario todo este campo, así que tal vez voy a copiar y pegar esto. Y, uh, esto es un poco al barrio tan. Voy a decir, um, um, punto universitario en la dirección de calle. Va a ser 1234 Calle Principal y la ciudad. Va a ser, um, Bronx. El estado va a ser Nueva York y el código de la ciudad una vez aquí, 33 y el teléfono 718453 a 3 a 32 OK, así que va a ser publicado para tienda. Y así tienes a Jason. Eso se ve bien después de encabezados y todo. Entonces veamos si podemos tener esto funcionando aquí. Se está ejecutando. Tenemos nuestro mongo db para probar eso. De acuerdo, así que vamos a seguir adelante y poner Déjame guardar esto genial y mandar, uh, porque eres un no se encontró en el servidor. Entonces veamos tener las vistas aquí dentro. Ah , son tiendas. Uh, ahí vas a salvo y luego manda todavía Oh, Dios. Poner almacenado. Vale, seguro Y la tercera vez es un encanto. No extra. Ser tiendas anfitrionas locales. Se está consiguiendo un 440 que conozco. Creo que me perdí un paso aquí, que es agregar los planos Correcto. Entonces veamos los planos aquí. Va a ser de oops. Por lo que desde las vistas de la tienda, importación tienda arriba y arriba regístrese abajo aplicación de la tienda de impresión Muy bien. Guardó esto. Empezamos el servidor, sin embargo empezó. Y vamos a darle otra oportunidad. Ah, tengo derecho. Voy a poner un coma extra aquí. Dice, esperando propiedad, nombrar, nombrar, encerrar comillas dobles, Línea ocho. Eso es lo que tipo de me gusta señalarme a la para que el aire así envíe. Y ahí tienes. Tenemos nuestra primera tienda. Tengo un 21 creado. Tengo el resultado. De acuerdo, Ciudad de tiendas, Bronx. Aquí está la idea que se generó. Y, uh, todo se ve muy bien. Impresionante. Entonces hagamos otra. Y este, vamos a hacer un get. Entonces vamos a duplicar esto. Ibas a llamarlo, conseguir tienda individual y actualizar. Ah, veamos. Entonces es un get stores. Ahí tengo a los Sombrereros. Entonces deberían funcionar cuando decimos eso y luego mandar, uh, no estoy consiguiendo ninguna tienda, creo que porque tal vez no lo estoy, um Ahora esto es conseguir todas las tiendas bien, Así que esto se haría decir que obtener todas las tiendas. Creo que es porque tenemos Realmente no hemos, um, um, habilitado que apenas estaban regresando, ya sabes, una cadena vacía. Pero probemos una tienda específica que es que cuando acabamos de crear um y creo que perdí el yo d ahí. Pero podemos comprobarlo en el en la base de datos. Por lo que muestran las abejas usan apuestas, a p muestro colecciones. Entonces voy a hacer el hallazgo de tienda Devi, y tengo la ficha ahí. Uh huh. Entonces voy a conseguir la tienda individual. Entonces vamos a duplicar esto, editarlo, conseguir actualización individual de tienda, y luego voy a hacer tiendas y la i d específica no tengo que pasar una barra trailing ahí porque esto es como una individual. No es como una carpeta, por así decirlo. Entonces vamos a guardar eso y mandar perfecto. Entonces me dieron el Ya sabes, los entrantes hoy me d Ahí está la h Air h ref para el yo, y eso se ve bien. Tan perfecto. Este Assad está funcionando bien. Ahora vamos a trabajar en el puesto en la delantera rápidamente, y luego vamos a implementar de verdad ve esta. Las tiendas Guettel 25. Implementar PUT y DELETE: ok para este video, vamos a implementar el put y elite para el endpoint de la tienda antes de hacer eso en. Como he dicho muchas, muchas veces, ya no eliminamos las cosas. En la práctica general cuando tenemos, es una bandera que nos dijimos, Um ah, algún lingote que está o en una vida o, um se puede decir publicado o como sea el caso. Pero no eliminamos registros porque en estos días el almacenamiento es tan barato que no tiene mucho sentido del dedo del pie, ya sabes, las cosas principales, y siempre tienes una especie histórica de versión similar de lo que ha pasado. No pierdes ningún dato. Entonces la forma en que voy a implementar la función de borrar aquí es voy a agregar un campo llamado Live y eso se siente va a ser un lingote y el Campo D V va a ser l Y la falla es igual a verdadera. Entonces cuando creamos por defecto, es verdad Y vamos a tener el Vamos a sumar vida al índice que tenemos aquí porque vamos a estar buscando cosas que son ya sabes, este público yo d o externamente el fin que la bandera de la vida es es es verdad. Entonces con ese cambio, ahora podemos seguir adelante y hacer un poco de modificaciones a la ah historia P. I, um entonces uno vamos aquí, necesitamos ahora comprobar si la solicitud es conseguir, uh, it no se consigue o no es la élite porque ambos métodos no van a tener una carga útil, um, um, o Jason, Um, datos ahí. Entonces vamos a decir si, um, um, método de registros no es conseguir y podríamos solicitar método no es la elite elite. Y, uh, y no solicitó a Jason en alrededor de 400. Eso significa que borrar no No estamos esperando ninguna solicitud ni Jason ahí dentro. La otra cosa es, ahora vamos a buscar externa como la historia igual d onda. Vamos a tener vida igual a Verdadero, porque así fueron, sabes, solo consiguiendo Si las tiendas están vivas y lo mismo con los objetos de las tiendas, todo lo que vamos a decir ahora objetos de la tienda filtran la vida es verdadera impresionante. Entonces eso nos deja crear ahora los métodos put y elite aquí mismo. Entonces aún así el método put va a ser muy similar al post, porque recuerda, poner es sobre, um, actualizar el registro. Y así vamos a ir y encajar todos los, um, todos los campos que están siendo pasajeros solicitan Jason. Y recuerda que poner está esperando que todos los campos batidos se pasen donde no podemos pasar. Simplemente siéntate en tu barrio o algo así. Entonces vamos a pasar una tienda, i d. Y lo primero va a comprobar que la tienda existe. Si no existe, entonces hacemos un para un cuatro. Entonces vamos a hacer lo mismo con el, um ya sabes, validador de Jason y conseguir que eso sea validado. Y si no, entonces devolvemos un error 400, y entonces aquí sólo vamos a tener una lista de todos los campos y guardar eso. Entonces en este caso, no es una caja fuerte. Es realmente una actualización. Pero eso es, ya sabes, entre los a ser, ya sabes, vamos a hacer a salvo, que es la misma masa que la, um preguntó la ah, como el salvarnos una nueva. De acuerdo, esa es la cosa puesta bonita, bastante directa y ha intentado a la vanguardia ahora, Así que la elite va a ser la siguiente. Conseguimos la tienda I D Y comprobamos que la tienda existe. Y si no, entonces regresamos un 44 Bueno, los sabios acabamos de poner la vida de la tienda en falso salvarlo. Y a cambio, una respuesta de dos o cuatro, lo que significa que no estábamos devolviendo ninguna información de vuelta. Pero, um, estamos confirmando que efectivamente pasó la operación. Entonces intentemos hacer esas cosas del lado cartero de las cosas. ¿ De acuerdo? El 1er 1 que vamos a hacer es que vamos a hacer un put, que va a ser muy similar a sus posts. Entonces vamos a seguir adelante y duplicar eso, y vamos a editar esto para que se ponga tienda de actualización. Está bien. Y así aquí vamos a tener una función put. Vamos a pasar lo mismo, excepto que d en ficha y en el cuerpo. Podemos cambiar lo que queramos. Entonces digamos eso así que vamos a ver. Cambiemos. Um, digamos el barrio así en lugar de apagado. Oh, espera. Y necesitas pasar la tienda real. Yo d Que tú eres que vas, Toby. ¿ Modificando? No, Guarda eso. De acuerdo, así que digamos que el barrio ahora es, um es una sensación del Bronx. De acuerdo, Así que el servidor recibido se está ejecutando aquí Perfecto. Se ve bien. Y mandemos esa solicitud y me dan un 44 Ahora, el motivo para levantarse por un cuatro es porque nosotros recuerdas agregamos un nuevo campo llamado Vida aquí y también agregamos en esto a los índices y los registros existentes no tienen esa vida campo. Entonces ah, cuando Esto, um este registro las ideas de la tienda que se buscan en el FBI y tiene thes um, esto tiene esto, esto tiene esto, como pepinillos a través de primero. Básicamente está cayendo al 44 porque no está encontrando una tienda que tenga la vida igual verdadera, porque ese récord en este momento no tiene ese campo de vida. Por lo que la forma más fácil de hacer esto es caer ya que estamos en un entorno de desarrollo, simplemente se dejó caer la colección y luego crear una nueva tienda. A partir de ese momento, si tú , ya sabes, terminas en la situación donde tienes existente, uh que son base y quieres hacer una migración con nuevos campos, necesitas escribir algún tipo de guión que lee todos los campos. Y eso es que el nuevo campo y luego indexar, esas cosas por lo que un poco más complicado. Pero como realmente no estamos almacenando nada de valor aquí, solo vamos adelante y dejamos caer la colección. Entonces para hacer eso, vamos a ir a la base de datos y vamos a decir, ya sabes, usar uh, apuestas. Ocho b I. Y si vemos las colecciones, vamos a ver caer la tienda B. Y ahora ya no deberíamos tener esa colección. Entonces, ¿ahora cuándo? Cuando se cree el nuevo registro , tendrá el campo de vida y serán índices adecuadamente. Entonces hagamos un post de nuevo aquí con específico, uh, tenemos la misma tienda que tenemos antes. Vamos a mandar eso y nos metemos un nuevo yo D. Y ahora vamos a tratar de, uh, actualizar esa tienda con la sensación Bronx puesta, Déjame intentar hacer el entrar en la tienda grande. Usaremos thes I d. aquí y consigo la tienda perfectamente bien ahí. Y ahora actualicemos esa ascendencia. Tenemos punto universitario aquí. Ve al Bronx, siéntete ahora, Así que vamos a guardar lugar y luego mandar. Y ahora obtengo el correcto actualizado aquí con 200. Um, y es el, um que se supone que debo decir que me pongo, estoy llegando a los 200. Um, y finalmente, voy a probar la función de borrar. Entonces sólo voy a clonar este y en ello, la tienda individual de élite, y vamos a hacer las pistas aquí, y es lo mismo que yo d aquí, 65 a Derecho. Entonces, vamos a guardar eso. Y lo vamos a hacer enviar y yo llego a permitirme ningún contenido, lo que significa que la operación pasó. Si ahora trato de conseguir esa tienda, consigo una para todos por no encontrada. Pero en la base de datos, aún debes ver que, um, ese registro ahí, pero tenemos vida igual a caídas. 26. Implementar la paginación en Get Todas las marcas: Entonces en esta lección, vamos a implementar la paginación para la tienda, obtener endpoint, y siempre debes devolver resultados paginados. Cuando vas a conseguir cuando vas a conseguir eso implicará una lista fuera de elementos u objetos. Um, es que, ya sabes, la mejor práctica para están consiguiendo una lista de objetos es la expansión ocho. Y siempre es mejor para mí, no hay servidores, escalabilidad, y para el cliente poder al lado qué página fuera que arrancó esa consulta dijo que va a estar consiguiendo así que vamos a ver cómo implementar esto. De acuerdo, entonces para que implementemos la paginación que vamos a necesitar, vamos a usar el método de paginación o iniciar funcionalmente el motor mongo proporciona. Y así vamos a definir una constante aquí, y vamos a llamarla tiendas por página. Y cuando le dije eso a 10 Así que voy a decir, por cada hit al get, vamos a conseguir 10 tiendas y luego, ya sabes, bueno, paginado a través de eso, entonces voy a tener, um, en el get para todas las tiendas entonces voy a conseguir esto, um, um, estos son objetos de tienda, filtrar la vida es igual a verdad. Y, um, vamos a estar pasando un parámetro de página en el euro que vamos a conseguir y luego Pagine ocho usando esa página y las tiendas por página. Entonces hagámoslo. Entonces esta es la petición que vamos a pasar y luego las tiendas iguala a las tiendas. Esa página paginada equivale a la base que estamos pasando. Y como puedes ver aquí, si tú no consigues ninguno, entonces vamos a fallar dedo del pie uno y luego por página va a ser esa constante que teníamos en la parte superior ellos piensan que vamos a hacer es vamos a insertar un auto HR ocho ref link a, ya sabes, apoyo, odio debe. Y vamos a decir que esta es una página una página específica. Entonces vamos a decir, um, enlaces, enlaces, y vamos a tener el espacio de la tienda HF h ref igual a página por ciento s. Y estos, um esto, uh, uh, coincidirá con la página que se sobre eso se está pasando en el sobre la solicitud aquí. Um, así que de esa manera podemos decir que este conjunto es perteneciente a esta página específica y creo que vamos a hacer también para que el odio adeuda. Denuncia es vamos a decir ¿Cómo llegamos a la página anterior? ¿ Y cómo llegamos a la siguiente página? Por lo que el cliente sabe cómo dedo del pie Pagine ocho. Entonces que íbamos a hacer eso es lo siguiente que vamos a tener Si las tiendas tienen anterior y , como ustedes saben, ha dicho previamente, algo así como un funcionario que tiene paginación en el motor mongol y vamos a doler dedo del pie la respuesta enlaces sección Ah, la página anterior. Y además, si las tiendas tienen siguiente, entonces vamos a subir las siguientes tiendas. Um, que de nuevo es es una función apagado el motor ah off mongo tiene pre número breve y siguiente número como parte de su de la paginación nuestro sistema tan cool. Entonces vamos a tener un No sólo vamos a ver cuál es la página actual, sino que le vamos a decir al cliente, Hey, y si quieres conseguir el siguiente set o el anterior, entonces puedes darle a esto aquí mismo. Entonces vamos a guardar este archivo y lo último que vamos a hacer va a modificar las plantillas. Y como te he dicho frijol, esto fue algo así como un positor. Nos vamos a ir a sustituir esto por lo siguiente, vamos a tener un objeto de tiendas, y luego vamos a golpearlo a través de los artículos de la tienda. Y debería saber artículos de tienda. ¿ Es el tipo de paginación como conjunto de consultas o la página con los 10 resultados o lo que sea que tiendas por página tengamos? Um, um tipo de identificado. Y luego vamos a levantar el objeto de la tienda. Y como puedes ver, es esto se está refiriendo, refiriendo Sing esto. Entonces donde tenemos una manera muy escalable fuera de reutilizar esto, pidió el resultado individual para cada objeto y finalmente devolverá el sujeto de la tienda, que va a ser esta esta lista fuera de los objetos que son ópticas de tienda. Entonces eso es más o menos, um Veamos cómo podemos conseguir las tiendas. Y ah, sólo para que lo sepas, implementé como que, o inserté un montón de registros. Entonces si le pegas a Devi tienda bien. Ahora tengo que ponerte especificaciones. A B Tengo esto,ya sabes, ya sabes, un montón fuera de registros para que podamos ver mejor la paginación. Entonces, en realidad, he creído 20 algo almacena tiendas ficticias que he creado. Entonces vamos con el dedo del cartero y a ver si funciona la paginación. Entonces, um, el servicio funcionando parece que todo es bueno. Entonces vamos a seguir adelante y conseguir tiendas más viejas aquí, y así voy a hacer enviar, y aquí tienes. Entonces tenemos un 200. Está bien. Y como podemos ver, tienes enlaces. Tengo un yo, que es la página uno. Por lo que este será ph. Uno fuera del set. Y entonces tengo una siguiente trampa, que también son spates . Entonces dice resultados. Está bien. Y luego veo las tiendas aquí, Um, y si tú, ya sabes, cuenta debería haber 10 en tiendas ahí dentro, así que eso se ve bien. Entonces, ¿cómo vamos a la puerta de al lado? Bueno, deberíamos una página a aquí. Um, y sólo puedo ponerlo aquí. Página es igual a dos. Enviar y ver. Ahora consigo un yo, que es la página dos. Obtengo un anterior, que es Espacio uno y el siguiente, que es la página tres. Y otra vez, otra vez. Ya sabes, las siguientes 10 tiendas. Um, nota ¿Cómo sabes que el cuatro dinero es ISA tiendas objeto que tenemos en nuestra plantilla, que tiene el yo y todas las cosas ahí dentro. Entonces tengo que decir, Se ve bastante guay. Y luego finalmente, Página tres. Esto solo tiene previamente no tiene siguiente porque solo tenemos 23 tiendas. Entonces aquí sólo vemos, Ah, creo que son las restauraciones. 12 Sí, tres tiendas. Tan impresionante. Eso se ve realmente bonito. Se trata de un conjunto de resultados muy profesional y la paginación, como dije, debería ser el método o que usas cuando tienes, ya sabes, cualquier lista fuera de objeto que vas a volver al cliente. Entonces eso es eso. Sigamos adelante, um, um, porque necesitamos algunas pruebas para esto para la aplicación de la tienda, así que empecemos a hacer eso. 27. Pruebas de tienda: en esta lección. Vamos a implementar las pruebas para las tiendas y punto, y vamos a empezar a usar algo completamente nuevo que no hemos utilizado en ninguna de la cancha tiene hasta ahora, que son los accesorios. Por lo que las características son pensarlas como datos que puedes almacenar por tu cuenta, tu repositorio real que contiene datos tormentosos que luego puedes cargar dinámicamente en tus pruebas para que puedas probar cosas como, por ejemplo, somos lo va a utilizar para la paginación. Entonces en cambio, fuera de ti creando como código toe bastante uso, como ya sabes, 23 historias como la que tengo ahora realmente creas estos archivos llamados accesorios y entonces ¿cuándo? Cuando las pruebas, estoy corriendo esas fotos, se cargan dedo del pie de la base de datos maniquí, y luego se pueden hacer operaciones en ellas. Entonces veamos cómo hacemos esto. Por lo que ya he cargado las pruebas desde el repositorio, y se puede, por supuesto, ver las que se llaman en el en el enlace que estoy brindando. Pero, um, solo necesito un ojo como ir y teclear todas estas cosas desde cero porque van a ser cosas que ya has visto. Entonces, sólo vamos rápido a través de ellos. Um, tenemos un caso de prueba de tienda donde creamos una siesta. Lo montamos como social y derribado. Tenemos otro diccionario hasta director que va a ser pet line, pet secret. Y esto es algo nuevo. Estamos haciendo un diccionario almacenado donde tenemos una especie de muestra en, ah tienda objeto que vamos a usar una y otra vez. Y, um, también nos van a crear algo. Um, un método que creo que usé mucho que es crear la app a p i. Entonces solo me gusta publicar al ábside con el con la app, el realidad el diccionario de aplicaciones que tenemos aquí en la parte superior y así como generar un token de acceso que como que nos gusta necesitamos también. Así que me compadezco solo al token de acceso con el diccionario objeto hasta y luego guardo que Assad s una propiedad para el clásico viejo autotoken que entonces puedo reutilizar. Y por último, una cosa que no hemos visto en el pasado es tener un método de encabezados. Onda de nuevo, esto es para hacer las cosas más fáciles para el para el acceso fuera de cada solicitud porque requiere que pasemos la apuesta alineada y el token. Entonces esas son como funciones de ayuda que vamos a estar usando. Entonces ah, las primeras, um, um, tiendas de pruebas de tienda. Um, batería de prueba tipo va a ser Ah, bonita. También bastante simple. Por lo que creamos una aplicación P I usando ese método que describimos anteriormente y generamos un token de acceso . Ahora, en esto, en este punto, tenemos el auto parlante disponible, y luego vamos a crear una tienda. Entonces, um, note como tenemos, um los Heathers iguala autoencabezados, que es este mito lo que tenemos aquí en la parte superior. Y ahora se puede ver por qué lo hice. Ah, una función porque vamos a usar esto una y otra vez. Por lo que aquí creamos una tienda. Pasamos el diccionario dolorido y comprobamos que tenemos un 21 que se crea, y también buscamos la tienda I d del Jason. Eso es retorno para que podamos volver a usarlo después. Entonces podemos probar conseguir una tienda usando esa tienda I D y que obtienes un 200 también podemos editar la tienda. Y aquí pasé, como un tipo diferente de objeto de tienda. Y luego pongo el como se puede ver aquí, tengo divertido puesto. Um, así las tiendas y apuntan y luego revisé que el nuevo teléfono que pasé aquí está siendo almacenado en el en ese objeto. Y por último, estoy probando el líder. Entonces, ya sabes, solo sigo adelante y borro esa tienda que serví que me dan un a un cuatro, y luego también consigo, um, um, hago acuario mongo db para ver si el si las tiendas de conteo que son vida se vuelven falsas es igual a uno. Entonces todo eso es amable. No demasiado sorprendente. Y creo, ya sabes, nuevo, lo puedes ver en detalle cuando tú cuando no conoces el código del desde el repositorio . Ahora, aquí es donde las cosas se ponen interesantes. Voy a tener un, um un mensaje de que voy a poder, um acceso desde los escalones, y lo voy a colocar en la aplicación. Ser ¿Por qué? Porque está algo relacionado con la aplicación. Um, así que aquí al final. Voy a hacer lo siguiente. Voy a definir un fixtures, um, um, método y lo que hace, Aprovecha la importación de manga con, um, que es un comando que Mongol TV proporciona. Y básicamente puedes definir Ah, host, host, que es escondite h Encontras la base de datos, que es ese Dash d Um, pasaste el guión C, que es el, ah, colección que eso va a ser ¿A dónde vas a importar ese archivo? Y luego tenemos un aparato, que es un archivo Jason, que vamos a pegar esto a la disfunción. Y luego usamos el comando call, que es un python como bajo nivel, um, um, algo así como un método que te permite ejecutar,ya sabes, ya sabes, comandos de shell dentro de un script python. Ahora, para eso, necesito agregar una biblioteca aquí llamada Proceso So. Entonces cuando digo que es de algún proceso de importación cool. Y, um, yo también necesito que crea los os, um Vamos a ver, No sólo ahí, Wes, necesito entre go para ser anfitrión nosotros. Voy a importar eso desde el ajuste. Por lo que de ahorro importación Mongol O d B anfitrión. De acuerdo, no creo que necesite nada más aquí. Um, Así que vamos a guardar eso, entonces la otra cosa que vamos a hacer es que vamos a crear un, um ellos ah, accesorios en el ah, en las tiendas. Um, en la tienda. Ligero directorio. Pero así yo típicamente y tú como desarrollador profesional, verás esto. Normalmente creas una carpeta dentro de tu aplicación llamada fixtures. Y luego dentro de eso vas a tener un nuevo archivo, y luego, ya sabes, esto va a ser tiendas, no Jason. Entonces aquí, vamos a poner los todos los objetos Jason. Y aquí, ya ves, hay 23 tiendas en. Van a salvar eso. Y luego lo siguiente es ir del pie a la prueba en sí y agregar esta funcionalidad. Entonces vamos a ir a la prueba, y luego vamos a decir, um de importación de aplicaciones, uh, accesorios. De acuerdo, así que vamos a ver cómo usamos Thea las fotos de esto en esta prueba que vamos a hacer para la paginación cree ese método y se va a llamar prueba, um, um, paginación de tienda. Y así vamos a hacer el A p creado y generar token de acceso y ver cómo ahora estamos haciendo las características desde la aplicación. Entonces estamos encontrando que los DVs un nombre de autoDB que está aquí, todo el camino en la parte superior, y vamos a tener la colección es una tienda, y luego el aparato es y puedes solo ah, uh, poner el camino desde la tienda de accesorios de la tienda de nivel superior. Jason. Entonces a partir de este punto, después de ejecutar este comando, lo único que es todo esas tiendas van a estar disponibles para que nos prueben, así que para ejecutar pruebas en. Entonces es un es un gran ahorro de tiempo. Y es, ya sabes, liberarlo para crear Ahora prueba que van a estar probando la paginación. Entonces vamos a escribir esos. Entonces primero voy a hacer me pongo tiendas viejas para no llegar con encabezados sobre tipo de contenido, y luego voy a aseverar que la mitad siguiente en los datos de RV ¿Por qué sé que hago va Tiene que estar ahí porque tengo más de una página y así que ahí sería una buena ya sabes, estoy probando correctamente la, um, um, la paginación ahí, así que las siguientes pruebas serían conseguir la segunda página, así que voy a pasar página igual a dos más allá de los encabezados y el contenido tipo. Y entonces debería tener anterior en el es los datos de RV también. Es lo siguiente porque estoy en medio de eso fuera de esa paginación. Entonces, um, difundir Eso es más o menos eso. Es decir, se puede llegar con otras pruebas. Creo que esto es Esto es bastante bueno. Entonces digamos eso. Y luego finalmente, tenemos que sumar nuestra nueva prueba aquí en prueba. Entonces vamos a decir de pruebas de tienda, Importar prueba de tienda. De acuerdo, por fin, necesitamos ejecutar la prueba, así que asegúrate de que tengas tu, um, tus contenedores fronting. Lo voy a hacer aquí mismo en la ventana manga db. Entonces voy a decir docker dash exacto i t No miré el docker ps o ¿Qué? Eso um docker ps Así es mascotas ap I Web Ron 18 y luego voy a decir por teléfono tres pruebas p y perfecto. Por lo que eso corre bien, notó que tenemos una conectada a mongo DB y luego dice, importó 23 objetos. Eso es de la importación mongol, Um ah, comando. Pero como puedes ver, ya sabes, hacemos todas las pruebas y todo se ve bien. Entonces eso está listo para las tiendas. Y la siguiente pieza en la que vamos a trabajar es el punto final real de las mascotas. 28. CRUD de que Endpoint con mascotas: De acuerdo, ahora que tenemos nuestro endpoint de tiendas, no vamos a volver a las mascotas y punto. Y como pueden recordar, fue una prueba muy parecida a la memoria. Tipo de, Ah, lista que teníamos ahí dentro, y no vamos a hacer que sea un tipo adecuado de punto final de apuestas como con el modelo de base y pruebas y todo eso. Entonces, empecemos a trabajar en eso. ¿ De acuerdo? Entonces puedes ver aquí tenemos a las mascotas, FBI tal como está hoy, y, ya sabes, FBI tal como está hoy, y,ya sabes, es una lista de objetos y entrar en el poste. Estamos como manipulando esa lista. Y por supuesto, no querríamos hacer eso antes de llegar, sin embargo. Um, ahí. Entonces sabes que estas vistas B y en realidad va a funcionar bien. Lo único que voy a cambiar aquí es en lugar de ser un fin aquí, recuerda que vamos a tener un yo externo D. Um, como las tiendas. Externalidad Um. Entonces, ¿vamos a hacer esto? Um, no residente, pero veo sólo un parámetro simple que va a ser como un como una fuerza. Entonces ese es el único cambio que vamos a hacer en los puntos de vista. Um, Y antes de trabajar en la P A, en realidad vamos a hacer, um, montar los modelos que vamos a estar usando aquí. Entonces vamos a utilizar el siguiente modelo tan importante db de la aplicación. Vamos a usar los modelos de tienda aquí porque tenemos una llave extraña, pero el modelo de cama va a tener alguna vez en externo, como d a name s species. Um, una raza y edad la tienda en la que se encuentra esa mascota, vamos a tener un precio. A menos que se pueda decir que hay un campo decimal. Vamos a tener un lingote vendido, que significa que si es cierto que ya se vendió, vamos a tener una fecha recibida, que es la fecha en que la apuesta entró a la tienda. Tendremos una fecha de venta, que es la fecha en que se vendió la mascota y van a tener un lingote de vida, que es tan especie de como hemos estado viendo. Esa es una especie de nuestra operación de eliminación va a afectar eso, pero en realidad no vamos a borrar ninguna mascota. El otro asunto está en los índices. Tengo más en los seis índices aquí porque voy a hacer algunas búsquedas que van a ser más un poco más complejas. El 1er 1 va a tener idea externa en la vida que va a ser aplicable. Cuando busco una mascota específica, entonces voy a tener una especie y vida, que es que vamos a usar cuando busquemos Buscar una especie ah específica. Onda. En realidad, ahora que lo pienso, también vamos a necesitar raza aquí en este índice porque voy a estar buscando ah, ya sabes, especies. Es como perro o gato y raza es como qué tipo de perro, como, como, es un multi Zohra Sheets que, um y yo íbamos a hacer, como, como, búsquedas a través de toda la mascota que baso Ah, utilizando esos dos campos. Y finalmente vamos a tener una tienda porque vamos a buscar Dame las mascotas que tiene esta tienda. Entonces esas son sus modelos, y eso se ve bien. Entonces empecemos a trabajar en la A p I. Así que hay, ah, algún apalancamiento que vamos a usar aquí. Um, vamos a tener Jason Schema para el esquema de validación. Um, te vamos a usar. Yo d por el Xterra. Dama on. Vamos a usar bien a Jason como de día. También vamos a usar, um, um, el esquema de apuestas otro que vamos a construir y unas plantillas de mascotas en esto y esto un p i y también vamos a usar los modelos de la tienda cuando regresemos los detalles de la mascota. Básicamente vamosa a imprimir la tienda. Um, entonces eso es eso. Empecemos a trabajar en lo real, um, veamos aquí en la clase real Perry p I, y lo primero que vamos a definir es un método innit. Entonces vamos a tener, um, um, las mascotas por página, igual que la paginación que teníamos en las tiendas y ruedas va a comprobar si el método de solicitud no es igual de conseguir. Y la petición Jason es, um, no está puesta. Entonces vamos a estar a bordo sin 400. Y en realidad quiero agregar eso porque, um, si si se está pasando la ventaja, tampoco pasamos una petición, Jason . Entonces y creo que también vimos eso. Por lo que realmente vamos a hacer lo siguiente un método de solicitud. No es obtener y método de solicitud no es eliminar. Y no tenemos que pedir a Jason que un pobre 400. De acuerdo, así que vamos a trabajar en la mascota, um, en el llegar aquí. Entonces vamos a hacer lo siguiente. Entonces voy a sacar esto, y voy a decir si se está pasando una luz, entonces pet iguala objetos de apuesta que filtran externos pagados d igual a mala idea y pepinillos de vida . Cierto. Devolvió el primer objeto. Si hay un hit, entonces devuelve la respuesta, que va a ser un resultado, vale. Y luego el objeto que vamos a definir en esta plantilla en la que vamos a trabajar en un poco, um entonces finalmente devolvió ese responsable 200 de lo contrario devolvió un 400. Ok, um, déjame también poner pasando aquí para que sepamos que vamos a trabajar en este después. Y empecemos a trabajar en el en esas plantillas. Entonces lo primero en lo que vamos a trabajar es la clave de tesis. Podría ser el porqué, para las mascotas y así es como se ve. Um, va a ser un nombre de objeto tipo va a ser cadena sospechosa, criador de cuerdas. La edad de la cadena es un número, y luego la tienda es una cadena precios una cadena. Y por qué los precios cadenas otro número porque tiene decimales y el manejo de Jason fuera decimales. Es ah, es un poco complicado porque creo que lo más cercano que estaríamos usando sería float. Pero float tiene, ya sabes, no son sólo dos decimales. Es un montón de ellos, por lo que se puede complicar. Por lo que decidí usar Price como cadena. Entonces recuerda que cuando estés pasando o publicando dedo del pie ese punto final, finalmente voy a tener una fecha recibida, y eso va a tener un patrón fuera de la fecha del alma que habíamos usado en el pasado. Ah, que es, ya sabes, el año, mes, día, y luego el tiempo, que es hora, minuto, segundo, y luego la Z, que es UTC. Um, y finalmente voy a hacer todos los campos requeridos. Entonces ese es el esquema para las plantillas. Voy a usar lo siguiente voy a tener, um esto es plantilla B y plantillas ser por qué, y aquí es donde vamos a hacer ahí. Vamos a tener el, uh no somos objeto importante de la tienda porque verás que vamos a usar la tienda aquí en la vamos a devolver la tienda como parte de la plantilla. Entonces cuanto mejor vaya a devolver el i. D. El nombre, la especie, la raza, la edad, la tienda como objeto de cuento. Y esto es algo muy guay. En realidad estamos aprovechando la óptica de la tienda que tenemos aquí. Entonces, ya sabes, no estamos repitiendo todo esto, y queremos ¿Cuándo? Cuando estamos regresando una mascota. Nosotros queremos. Ah, regrese. ¿ En qué tienda? ¿ Doc? Apuesta está en. Um, no tengo la fecha recibida, que vamos a hacer. I s O formato de la misma. Um, sin los segundos. Y luego la sección de enlaces, que tendrá el yo y finalmente, el objeto de las mascotas va a ser el arrayed que se está pasando cuando hagamos el get no la mascota individual, sino la, uh, todas las mascotas para eso para esa tienda. Um, bueno, no para esa tienda por eso para ese punto final. 29. Terminar de GET, de masa, de POST y de caricatura: De acuerdo, sigamos trabajando en la A P. que oigo. Y, uh, Así que voy a hacer ahora la no la mascota individual, sino la si estás consiguiendo todas las mascotas. Entonces no tenemos más, um, vamos a conseguir mascotas mayores que están en vivo, y estamos a cambio la paginación usando una página. Um, Y entonces finalmente tenemos el resultado. De acuerdo, con los enlaces del dedo del pie la página específica, y vamos a pasar las apuestas. Objeto si la paginación de mascotas tiene anterior de lo que anexamos ese enlace dedo del pie el h aire h, ref. Um, Y si tiene un siguiente, entonces anexamos. Eso está bien, entonces nada que no hayamos visto antes. Esto es muy similar a las tiendas y punto. Um y eso es todo. Entonces ahora vamos Ah, vamos a trabajar en el poste. Totalmente no reemplazar a partir de aquí. Y así vamos a tener, uh, apuestas. Jason es la petición, Jason. Entonces vamos a comprobar si el validador ha pasado el, um, el esquema. Si hay algún error de los que devuelves nuestro mensaje, entonces buscamos la tienda. Vamos a pasar lo externo como el en la mascota opuesta a ver si me refiero a meter eso de vuelta una tienda específica. Si no se encuentra esta historia, entonces regresamos, almacenamos, no encontramos. Entonces vamos a probar que el ocho recibido. En realidad es una buena cita. Y lo hacemos usando un try, excepto si eso, um, ese método llamado cadena. Um, P tiempo, que es el espectador a tiempo, Uh, no lo hace, ya sabes, error fuera? Entonces está bien. Pero si no lo hace, esa es una fecha inválida. Por último, creamos el objeto pet, y aquí vamos a tener el externo i d el que vamos a crear. Ah, ese momento tendría el nombre de especie raza edad precio de tienda y recibió ocho. Y vamos a salvar ese objeto y finalmente devolveremos el objeto mascota. Um, con un 21 lo que significa que el objeto fue creado correctamente. Um, no, lo pongo dos veces, así que nos deshacemos de eso. Um, cool. Entonces creo que podemos seguir adelante y hacer un par de pruebas aquí antes de que hagamos el put y elite. Entonces aquí tenemos a nuestro cartero y, um, ya sabes, antes de que nos digamos, como, jugar con el con el poste y apuntar para las mascotas, Vamos adelante y comprobemos que está abierto corriendo y lo está corriendo. Y tengo éste yo, como, como, puse una mascota en esta primera tienda. Entonces lo sé. Tomo nota el yo d ah, aquí. Y luego me voy a regodear por el poste. Ellos inician el inicio del viejo tipo de prueba que hicimos al inicio del curso, ¿ verdad? Entonces no son Ah, no son como trabajar correctamente. Pero vamos a ver si podemos hacer esto. Así que tienen el punto final de la publicación. Van a ser mascotas anfitrionas locales. Creo que no tenemos el encabezado, así que necesitamos conseguir los encabezados, y el cuerpo definitivamente no está bien. Por lo que acabo de inventar un objeto con el que se puede ir adelante y probar. Entonces solo es mi perro real, Mac. Él dice que ella, um la H es en realidad 11. Ah, él es esta tienda. Este es un precio que acabo de hacer. Pero para mí, claro, él es su mucho más valioso que eso. Ah, Entonces, um, necesito Guardemos eso por ahora. Necesito conseguir aquí el token para esto. Entonces vamos a tener X arriba. I d X Uh uh, La bilis pequeña y luego x token es ese valor ahí. Entonces sigamos adelante y guardemos eso. Entonces tenemos su cuerpo, tenemos los encabezados, para que todo se vea bien. Um, y vamos a seguir adelante y hacer una publicación en. A ver si esto se está ejecutando aquí. Sí, está corriendo. Entonces post Ah, nos dieron un error. Penn no está definido. Um, ver si puedo revisar el paquete o el archivo que está tirando eso. De acuerdo, entonces creo que no tengo me refiero a importación de modelos de mascotas. Importación mascota, Uh, hoy Extraño. Oh, porque era Dios. Ya estaba aquí antes, y creo que acabo de sobrepasarlo de modelos de mascotas. Importar importación Apuesta. De acuerdo, intentemos eso otra vez. Perfecto. Entonces conseguimos que creara a nuestra mascota. Aquí puedes ver los detalles. Por lo que tenemos. Es una raza H de velocidad. I d. Los enlaces es el nombre individual de la mascota. Mac Precio fecha de recepción. El día llegó perfectamente bien. Y ah, a ver cómo estamos pasando. Esto es una cita ahí, pero esto es muy esto es algo complicado porque en realidad estamos pasando esto. Esto es una cuerda y lo que estamos haciendo en el a P. I es que estamos, um, usando esto. Ah, una cadena, um, horario diurno de cadena horario que convierte un patrón conocido para una, um, cadena específica um, en un objeto diurno. Y eso es lo que estamos ahorrando en la base de datos. Y luego cuando llegue a su regreso, estamos convirtiendo eso a, ah, cuerda usando el hielo. Entonces formatear. Entonces es que se ve muy simple, pero en realidad es una montura bastante cool. Y puedes usar eso para tu para tus ojos AP Ahora para el get um, en realidad, ah, quiero decir, podríamos conseguir el i d. aquí. Vamos a tener que, como, también copiar y pegar el arriba. Entonces eso es por este grande Vamos a hacer que se pongan todo endpoint. Entonces a ver si eso funciona. Entonces conseguir todas las mascotas y punto Uh, tenemos la ficha, pero tal vez no sea la más reciente Café y enfrentar eso por si acaso. Ah, fue Fue una buena, muy buena. Entonces si dijimos mandar, aquí tienes, nos llevamos todas las mascotas. Y por supuesto, no hay muchos de ellos, pero es la base de ST Pat igual a una, y está devolviendo Mac como el único objeto ahí. Entonces todo eso está funcionando. Bien. Ahora vamos a conseguir una mascota y punto. Esto definitivamente necesita mucho trabajo. Entonces creo que copié el Max I d. Y saquemos los encabezados. Entonces necesitamos X. Uh, ser móvil X toke y no hablar. Um, y vamos a copiar eso. Espera, ese es el Ese es el token. Y la idea de que tal vez me equivoque. ¿ Dónde está Max? Yo sería éste de aquí, ¿de acuerdo? Basado Empezando aquí y guardar este Enviar. Perfecto. Entonces tenemos max object aquí y allá vas. Um, nota que estamos, ya sabes, estamos consiguiendo los detalles de la tienda aquí, lo cual es un muy bueno Así es como el hielo AP debería funcionar como tú no deberías estar. Estás diciendo tienda y el I. D. Um, solo deberías, ya sabes, ayudar a subir con toda la información. Si es un objeto grande como la tienda tiene mucho fuera de objetos ahí dentro, entonces definitivamente podrías potencialmente simplemente pasar idea, tal vez algunos detalles clave, y luego tener la declinación obtener todos los detalles para la tienda, pero porque no es un objeto grande, creo que es bueno que incruste otros objetos dentro del retorno Jason que le estás dando de vuelta al cliente. Perfecto. Entonces ahora tenemos que trabajar a pie y el tardío así que sigamos adelante y trabajemos en eso. 30. Masones y DELETE: De acuerdo, Vamos a trabajar ahora en el put y elite, y esto es muy similar a lo que hemos hecho en las tiendas, y en realidad es similar al post. Entonces solo voy adelante y ritmo eso desde el repo. Entonces tenemos un, um vamos a buscar a la mascota basándonos en la mascota que yo d Y nosotros si no encontramos la cama, vamos a devolver el 44 Entonces llamamos a Pat, Jason, Toby la petición, Jason. Y vamos a pasar por el validador para eso para ese objeto Jason. Y si hay algún error, volverá a 400. Um, entonces buscamos la tienda en base a la cadena en la tienda, y si no encontramos la tienda, entonces devolvemos un 400. Y finalmente probamos la fecha en DSI que es ah, es una validación. Si todas esas cosas van, bueno, entonces solo establecemos las diferentes propiedades. Especies principales criar edad precio de tienda y recibir fecha, dedo del pie la mascota y luego guardar el objeto. Por último, donde regresamos, un resultado apagado. Está bien. Y entonces el objeto de la cama es el pasado con la apuesta de que el líder va a ser algo parecido. Por lo que obtenemos la mascota de lo externo como el Andi. Si la cama no está fundando, volvería por cuatro. Si lo hace, si se encuentra. Y dijimos su vida en cama, dedo del pie falso, guardar eso y devolver una herramienta para Así que esos son los puestos en la delantera. Entonces probemos esos en la ejecución. De acuerdo, así que vamos a probar estas cosas ahora en carteros, y tenemos un puesto aquí, pero probablemente voy a estar solo, um Sí, vamos a conseguir el objeto desde el punto final de post en su cuerpo del año Ve. Y entonces lo que vamos a hacer aquí es que vamos a, uh, actualizar Max plática con Max H 2 12 Así que es un año mayor, y necesitamos actualizar eso, um, la mascota I d Necesitamos sacar de la Guettel apuesta y apunta aquí. Y oops, copié todo el asunto. El i d. ahí vas. Y eso guardó por ahora. Y por último, necesitamos agregar los encabezados. Entonces veamos el token aquí y x arriba. Yo d Es más vil y acepto token. Está bien esto. Parece que todo se ve bien ahí. Entonces, vamos a guardar eso. Y impresionante. Nosotros salimos. 200. De acuerdo, veamos la edad. Ahora tiene 12 años. Uh, donde está H O. H. Es el 1er 1 Así que el registro se actualizó correctamente. Tenemos un 200. De acuerdo, así que eso se ve bien. Y si obtenemos el punto final específico, se ve la edad ahí dice 11%. Ahora ya ves, la edad es de 12 años. Impresionante. Entonces ahora hagámoslo a la élite. Um, vamos a copiar el yo estaría aquí, y vamos a subir los encabezados X. I d es móvil X up token. Y es bueno que desde aquí. Impresionante. Entonces eso es todo lo que debemos necesitar. Guardemos eso. Por lo que lo tenemos y mandar perfecto. Tenemos una herramienta cuatro. Lo que significa que el servidor eliminó eso. Esa apuesta si tratamos de conseguir Mac Ahora, aquí obtenemos un cuatro Ford no encontrado, que es su comportamiento. Queremos tener. Impresionante. Entonces terminamos con la multitud. Hemos creado, leído, leído, actualizado y borrado. Y ahora sigamos adelante y escribamos algunas pruebas para la cama 31. Pruebas de mascotas: Entonces terminamos con los puntos finales de Krug mascotas. Y ahora vamos a hacer las mascotas, um, pruebas para eso Por esa parte del sistema A P I. Voy a pasar muy rápido por ello porque es la mayoría de las cosas que vimos en el FBI de la tienda. No obstante, hay un par de cosas que les voy a mostrar. Una es, um vamos a tener ah accesorios para las mascotas y las tiendas mezclando una prueba. Um, y en realidad agregué ideas al aparato. Por lo tanto, asegúrate de revisar el repo para las tiendas accesorios accesorios porque ahora tienen una idea al principio. Y así puedo. Entonces los accesorios de mascotas pueden dirigirse o ah, hacer un campo de referencia. Dos tiendas que están en ese Jason, um, tiendas de accesorios archivo. Entonces, empecemos. De acuerdo, entonces agreguemos el archivo de pruebas aquí, y voy a pasar rápidamente por esto, como dije, porque es muy similar a la prueba de la tienda. Entonces vamos a tener incluidas las diferentes bibliotecas. Um, ahí es donde ahí es la configuración los modelos que necesitamos y eso aquí. Obtenemos la clase de prueba de mascotas. Vamos a crear una app con esta configuración basada. Y ah, también vamos a tener el set up con la fábrica de aplicaciones y un derribo que va a tener el que se basa siendo caído. También voy a armar un diccionario ab, que va a estar frío siempre que queramos crear una nueva aplicación un diccionario almacenado, que es una especie de tienda ficticia que estamos creando aquí. Y, uh, finalmente, vamos a tener un diccionario ah pet, cual vamos a tener, um, con algún tipo de boilerplate como, uh, objeto mascota. Ah, Y otra vez, como podemos ver, tengo el, uh, mi perro Mac, ahí dentro. Um, entonces vamos a tener thea un método, um, ayudante mítico. Crea una aplicación p i, que hará Ah, básicamente publicar una app demasiado grande con con el endpoint de apse. Y luego también vamos a tener un token de acceso de generar. Ah, ayudante. Esa rueda generó acceso hablando y dijo que pidió el autotoken para la clase a partir de ese momento, um, yo también tengo los encabezados, y finalmente, podemos empezar a hacer algunas pruebas. Entonces las primeras cosas que tenemos que hacer aquí, es para afligir la aplicación A p i y luego generar el token de acceso. Ah, genera nuestra primera tienda. Y luego finalmente, vamos a probar el crear una, uh, una mascota. Esta es la primera prueba real que estamos haciendo aquí. Entonces vamos a publicar en el endpoint de mascotas con encabezados, el diccionario de atrás que tenemos y la mascota I d va a ser almacenada en esta viable y vamos a aseverar que tenemos una herramienta uno. Así que hay un montón de cosas. Algo que es un poco diferente aquí que no sé si notaste es que en el diccionario de la cama? En realidad estoy referenciando auto historia t Así que pensarías, como, ¿por qué funciona eso? Ni siquiera hemos, como, configurado la historia D por ese momento. Bueno, las cosas que cuando configuramos o definimos el método de ayuda, en realidad no lo estamos llamando. Sólo lo estamos definiendo. Entonces esto es como una especie de viable que se va a fijar más tarde. Y en realidad, cuando lo llamamos, ya hemos creado una tienda y lo estoy almacenando en esa historia de uno mismo. Sea así cuando llamé al Diccionario de Self Back que, um que viable es existe y y y puede ir bien, Así que ese es un pequeño truco que ustedes pueden usar. Y, uh, ya sabes, vamos a estar usando eso en este caso, eso No, vamos a pasar por las pruebas más antiguas, que es conseguir y editar y borrar. Entonces para el levantarlo lo vamos a hacer, ah, vamos a golpear el punto final para mascotas. Además me pagó d con los encabezados y deberíamos salir. Ah, código de estado apagado 200 para edición. Voy a, um, um, crear un nuevo objeto que es una apuesta completamente diferente. Y básicamente voy a golpear el punto final puesto con esa mascota i d. Y voy a comprobar que el status Cody es 200 y que, uh, la especie de mascota se ha actualizado para ser gato. Y por último, voy a conseguir a la elite una mascota que está golpeando ese mismo endpoint con delete y que tenía yo d. Y estoy aseverando que el código de estado es a un cuatro y que el conteo para mascotas que tienen la vida igual bandera falsa se dice a uno. Entonces ese es un conjunto bastante completo, ya sabes, prueba para la multitud. Parte de ello. Uhm ahora voy a seguir adelante y ah, en la prueba en la prueba B Y. Así que voy a ir aquí y voy a decir desde BET tests import pet test, y eso luego va a incluir eso ahí dentro. Um, eso es, uh eso es un buen comienzo. Vamos a probar la paginación con el con los accesorios, pero creo que podemos Ahora podemos ejecutar esta prueba y ver qué pasa. Entonces para ejecutar la prueba, vamos a asegurarnos de que nuestras continuidades estén funcionando y comprobemos cuál es el nombre del contenedor docker . Ah, parece que son mascotas ap. Fui uno. Entonces voy a decir docker excepto Dash I t, uh, mascotas a p i Web one y luego por teléfono. Tres pruebas ser ¿Por qué? De acuerdo, así que sigamos adelante y corremos así de perfecto. Entonces aquí veo que se corrieron los accesorios para las tiendas con. Por eso conseguimos que importó 23 objetos. Pero las pruebas están funcionando bien. Entonces eso es un buen comienzo. Entonces sigamos adelante ahora y tratemos de configurar los accesorios para probar la paginación 32. Pruebas de pago de la paginación: por lo que la frente y crear los accesorios aquí en la apuesta. Por lo que vamos a crear una nueva carpeta llamada Fixtures. Y dentro de esa carpeta, vamos a tener un archivo llamado Mascotas que Jason y Ah, ven. Entonces voy a copiar eso desde el desde el repositorio en Aquí tienes. Entonces tenemos Ah, tenemos 15 palmaditas, y muchas de ellas son Ah, puede ver aquí que tienen un, um y yo d ya siendo puesta así como un externo como el y, ah, muchos de ellos pertenecía a la misma tienda. Entonces ya ven, aquí está el B ocho c al final, con excepción de los últimos tres. Y eso es porque también quiero probar la paginación en las tiendas. Cuando lleguemos al punto en que estamos paginando vacunando a través de mascotas que están en una tienda específica para que puedas agarrar eso. Es el Jason de la del reporte get, gente que está ligada en el, um en el curso. Entonces eso es eso. Entonces ahora vamos a hacer la segunda parte de la prueba, que va a ser la pieza de paginación, Así que empecemos con eso. Entonces sigamos adelante y probemos ahí la función de paginación. Entonces vamos a decir paginación de prueba. Uh, primero nos levantamos y corremos, y vamos a importar los dos accesorios, las tiendas y la mascota, y ahora vamos a conseguir las mascotas mayores. Y solo necesitamos conseguir el, um,el um, en el endpoint de las mascotas y comprobar que al lado enfrente de ahí. Y luego también obtenemos la segunda página de mascotas y vamos a comprobar que la página anterior está ahí también. Entonces eso es más o menos eso. Eso son todas las pruebas de paginación que tengo. Y creo que es ah, es una cobertura de prueba de texto bastante buena ahí. Entonces sigamos adelante y tratemos de correr eso. Y así vamos a despejar la pantalla aquí y ejecutar Python tres pruebas. Perfecto. Entonces todo corre perfectamente aviso aquí que tenemos ahora las 15 mascotas que se importan y las 23 tiendas en, um en el segundo fixture que en esa segunda prueba que estamos ejecutando. Entonces eso es todo. Um, tenemos nuestras mascotas, pero totalmente probadas, así que Ah, estamos casi casi Ah, el final. Um pero tenemos Ah, un par de lecciones ahora. Queremos pasar por 33. Consigue todas las mascotas en un endpoint de la tienda: De acuerdo, entonces las siguientes dos lecciones se va a tratar de funcionalidad de búsqueda para R A P I. El primero 1 que vamos a hacer es conseguir todas las mascotas en una tienda. Y el 2do 1 que va a ser la siguiente lección, es mirar a través de, um, las mascotas mayores usando filtros para, como, la raza y la especie. Entonces veamos cómo hacemos eso. Por lo que queremos conseguir un endpoint llamado store story D pets para conseguir todas las mascotas de esa tienda . Entonces para hacer eso, vamos a tener un nuevo endpoint, y vamos a llamar a eso el siguiente código. Si una tienda arriba en tu cuento l store, las mascotas y nosotros vamos a conseguir eso usando un método get, Um, del del FBI. Tan cool. Por el momento, tan bueno. Entonces vamos a, um, siguiente vamos a trabajar en el propio A P i. Entonces, vamos a guardar eso. Y vamos a añadir un par de librerías aquí cuando diga de modelos gordos importar mascota y de plantillas de mascotas importar mascotas arriba. Um, también voy a tener una especie de como la misma, uh, constante aquí. Voy a decir automascotas por página van a ser 10. Entonces lo que vamos a hacer es que vamos a tener paginación en el, um, en el punto final real. Um, y, uh, vamos a, um, la mitad. Si hay más de 10 mascotas en esa tienda específica, vamos a tener el, ya sabes, anterior siguiente, uh, tipo de puntos finales. Entonces lo siguiente que vamos a hacer es que vamos a modificar la mascota, um, en pointe, y vamos a tener el siguiente código. Hacer y decir, si las mascotas está en la solicitud, tu URL, entonces vamos a sacar los objetos de las mascotas que están en esa tienda y luego poner viable la página y conseguir la paginación de la misma. Y entonces la respuesta va a ser un resultado. ¿ De acuerdo? Con los enlaces fuera de la ah, esa página de mascotas y el, um, el objeto de la tienda real incrustado ahí. Um, si tenemos previsualizaciones y esto es algo así como lo has visto antes, entonces vamos a escribir una página anterior dedo del pie el punto final, y también vamos a comprobar si tiene siguiente. Entonces vamos a tener el, uh el enlace nos ha levantado. Bueno, bien, así que eso es Eso si las mascotas están en la solicitud que tu URL entonces vamos a decir lo contrario. Um, si eso es no está en el punto final. Entonces vamos a tener sólo la respuesta para el objeto para la tienda. Y, uh y entonces acabamos de devolver el objeto de vuelta al punto final. Entonces esa es la modificación para la historia, P I Ahora también necesitamos hacer algunos cambios a las plantillas de mascotas. Um y así la idea aquí, esto es algo nuevo que estamos insertando aquí es ahora vamos a pasar un piso llamado No store es igual a cierto. ¿ Cuál es la idea? La idea de que tenía waas Si ninguna historia era cierta, entonces no vamos a tener en las plantillas de mascotas. Uh, justo aquí. No vamos a tener el enlace de la tienda, uh, mandado ahí porque va a ser No hace mucho sensible. Ah, si buscamos las mascotas en una tienda específica para tener todas las mascotas ahí con la tienda repetida una y otra vez. Entonces lo que vamos a hacer es que vamos a tener esa pieza de la tienda para que sea opcional, y sólo se va a mostrar si lo saben, Tienda bandera A dijo demasiado cierto. Entonces veamos cómo hacemos eso. Entonces vamos a tener, um la tienda de notas de bandera iguala a caídas aquí, y eso es un defecto. Y recuerda, en las funciones python cuando tú, um cuando pasas un perímetro con un valor predeterminado, eso significa que puedes pasarlo o no tienes que pasarlo. Um, así que eso es como un na opcional un parámetro nocional. Y lo que voy a hacer aquí es que voy a sacar esto y voy a decir, en lugar de días de retorno, voy a decir que el objeto de apuesta es igual a esto. De acuerdo, um, y entonces voy a decir, si no sé tienda. Entonces voy a decir pet object off un poco. Objeto. Ah, tienda va a ser objeto de tienda fuera de la tienda de pat dot. Está bien. Y finalmente, voy a devolver el objeto pet, y necesito también tener la bandera de no tienda aquí porque recuerda, disfunción se puede llamar, um, desde el para el tipo individual de plantilla como, pero también se podría llamar desde el Si consigo una lista de mascotas, quiero poder hacer eso también. Entonces aquí voy a decir que las mascotas se oponen. A pen pit object, Bad Kama, sin tienda. Y la forma en que pasé esa bandera hacia abajo al objeto mascota Um, la función. Entonces eso es eso. Y creo que eso es todo lo que necesitamos hacer para el Pero necesitamos hacer un pequeño cambio en las plantillas en la tienda también. Entonces son las plantillas de la tienda. Entonces lo que voy a hacer aquí no va a, um, a un punto de las mascotas el nuevo punto final el largo para que podamos ah, ya sabes, observar. Oye, sí y ah expuso los posibles enlaces que tenemos. Entonces voy a llamar a estas mascotas Rehl. Entonces? Por lo que necesitamos conseguir las mascotas. Y luego voy a decir slash stores slash por ciento preguntan cuál va a ser un string slash pets y luego porcentaje. Ah, guarda ese externo. Yo estaré bien. Entonces ahora vamos a tener que enlazar uno. Va a ser este yo y ahí va a estar uno el carril de mascotas, que es decirle al cliente, o por cierto, si quieres ponerte los fosos en esta tienda, solo necesitas hacer esta barra de mascotas en el individuo. Ah, tienda cool. Entonces probemos eso y veamos cómo funciona. 34. Prueba todas las mascotas en un endpoint de tienda: De acuerdo, así que ahora quiero probar conseguir las mascotas en una tienda específica. Y para eso quiero volarlo los accesorios usando este accesorio Ah, función que tengo en la aplicación p y y cargar tiendas más antiguas así como una mascota. Entonces esto ah, accesorios que confinó en el bajo repositorio que yo que estoy señalando en cada lección. Y lo bueno es que los accesorios tienen para simple las tiendas tienen un i d. en la apuesta. Tengo el enlace externo a las tiendas usando la idea fundando aquí. Entonces tienes ah, bastante buenos datos de set con los que jugar. Entonces no tienes que, como, construir como, eso a partir del francés. Entonces la forma en que vamos a hacer eso es que vamos a abrir, y te asegures de que tus contenedores Docker se estén ejecutando y abras una nueva pestaña. Y en esa parte superior, vamos a tratar de conseguir el, um, ver el por teléfono, manejarme. Por qué shell e importar que esos accesorios funcionan aquí que tenemos para eso para la prueba y usarlo para cargar nuestros o datos. Entonces voy a decir docker ex SEC. I t, uh mascotas ap I Web uno por teléfono tres Gestionado B y shell. Entonces voy a llamar a la administrarme. ¿ Por qué? Usando python tres dentro del contenedor, Pero en realidad estoy interactuando con él desde el de la cáscara de mi otra cáscara de olor. Entonces mira, tienes esas tres flechas pequeñas ahí. Eso significa que estamos en el caparazón y estamos listos para irnos. Lo primero que voy a hacer es que voy a borrar los datos existentes que tenemos para que tengamos, ya sabes, todo limpio desde cero. Entonces voy a decir de la tienda modelos importar, uh, tienda. Y voy a decir de eso modelos importan mascota y quieren decir óptica de tienda. Ah, la élite. Y quiero una mascota segura objetos, toda la élite, y no dirán de aplicación accesorios de importación. ¿ Son esos accesorios o arreglaron sus accesorios? Está bien. Y luego voy a decir, um, accesorios. Tenemos que pasar la base de datos Earp. Es una p I. Tenemos que pasar la colecta, que es tienda, y luego el familiar, um así la imagen presentada relativa a la a la petopia. Por lo que sería en este caso para la tienda sería accesorios de tienda, tiendas, Jason, Jason, accesorios de tienda, tiendas, Jason, um, um, y que importó los 23 objetos ahí. Um, déjame despejar esta pantalla, y luego voy a decir que los accesorios se ajustan a un p I, uh, mascota. Y luego dos partidos pats. Hechos que Jason. Ah, ¿es malo? ¿ Apostar? Sí, su mascota arriba. Correcto. Impresionante. Por lo que ahora importamos esos 15 objetos y las tiendas también. Y vamos a revisar si tenemos las tiendas configuradas tan correctamente, así que voy a conseguir todas las tiendas y perfecto, tengo ya sabes, página uno mira esta página también, lo que significa, ya sabes, cargó más de, um 10 que es un tenis de creencia, el número de fuente. Y, um, y déjame conseguir que todas las mascotas vean si eso también funciona. Y sin embargo tenemos Tenemos un montón de murciélagos ahí dentro con unas tiendas diferentes. Entonces ahora voy a probar lo que acabamos de hacer. Ahora, que es conseguir las mascotas en el en una tienda individual. Um, precargé aquí. Tengo ah tienda I d Esa es la 1ra 1 que tiene más de 10 mascotas quería dedo del pie. También comprueba la paginación por lo que aún se envía. Y como se puede ver aquí, está funcionando perfectamente bien. Yo consigo todas las mascotas que están en esa tienda y ah, se ve muy bien. Y tenemos una herramienta de página. Entonces si pasamos aquí página de signo de interrogación es igual a dos. Obtenemos la segunda página. Tan perfecto. Ahora ya ves cómo funciona eso. Y, um, ya sabes, es ah, es un muy buen enfoque para conseguir objetos que están dentro de otro objeto de una manera relacionada . 35. Busca mascotas con filtros: al venir funcionalidad que somos ahora encontramos en ojos AP es la habilidad toe filter través de objetos usando algún parámetro sort off like en el comandante en el ojo a donde viniste, por ejemplo, en nuestro en nuestro caso que dicen tenemos el punto final de apuestas Guettel. Um, en lugar de ver a todas las mascotas a través de todas las tiendas, tal vez quiero ver solo a los perros, verdad. Ese sería un caso de uso muy común. ¿ Verdad? Entonces, um, lo que me gustaría hacer es decir algo así como un signo de interrogación y luego poner, um, um, especies iguales a oscuras, por ejemplo, por ejemplo, y tener la capacidad de filtrar a través de todas las mascotas y punto, um, pero sólo mostrando que los perros y lo mismo. Si quisiera filtrar aún más, podría hacer algo así como y criar iguales. Ah, Hojas lo harían, digamos bien así lo estaría Estarían consiguiendo todas las sábanas mayores que perros a través todas las tiendas de mascotas porque, ya sabes, si un común para Charlie sería Oh, Yo quiero conseguir una sábana a y quiero ver en qué tiendas venden ese tipo de perro en. Entonces eso es lo que vamos a hacer ahora, y no es muy complicado. En realidad, es una solución muy escalable que vamos a usar. Entonces sigamos adelante y modifiquemos la mascota A PR endpoint. Entonces déjame detenerme de cerca aquí. Y así lo único que vamos a tener vamos a necesitar que no tenemos en este momento es veas como tenemos todas estas mascotas como la H ref y la tiene previsualizaciones. Eso es lo siguiente. Tenemos que modificar eso porque vamos a tener filtro. Entonces si fueras una especie de, como, extraño estar haciendo Si el parámetro de filtro quiero es especies, entonces manda este enlace y si no y así eso tendría mucho sentido. Entonces lo que vamos a hacer es que vamos a tener una plantilla de algún tipo que vamos a insertar aquí, que va a ser pet h r H ref. Y luego vamos a decir pet page y luego por ciento s, que va a ser un básicamente que el ritmo que la persona está diciendo, pero vamos a poder entonces agregar dinámicamente a ese H ref basado en los filtros bajo que el usuario es ojos solicitando. Entonces aquí vamos a hacer lo siguiente. Entonces en por debajo del filtro real aquí, vamos a hacer ahí siguiendo va a tener si especies, en argumentos de petición, vamos a filtrar por la especie y al dolor que h ref ese argumento de solicitud en el misma cosa. Si tenemos raza en los argumentos de solicitud, entonces puedes filtrar eso usando el, um, el argumento de petición y agregarlo al rifle de loro. Ahora, una cosa genial de usar consultas en o EMS es que puedes filtrar más. Entonces, por ejemplo, si tuviéramos especies y luego criamos minorías que estamos modificando las mascotas consulta dos veces y eso está bien. Qué es eso lo que eso va a hacer es que vamos a tener mascotas inicialmente va a ser filtro por especie, ¿ verdad? Entonces, por ejemplo, tenemos un perro o perros. Um, entonces, ¿cuándo? Si tenemos una raza también ahí dentro, esta mascota está haciendo referencia a estas mascotas ya filtradas por por perro. Entonces eres como hacer en realidad un segundo filtro, que es perfecto, es exactamente lo que queremos hacer. Pero si por algunos ya sabes, si el usuario está pasando sólo valiente, por ejemplo, por ejemplo, así que la raza es igual a porquería. Entonces sin pasar la especie, eso también funciona. Porque estas mascotas entonces estarían haciendo referencia a todas las mascotas como la, um los objetos de mascota mayores que tenemos aquí dentro, ¿ verdad? El vida es igual a verdadero. Y ahora estaríamos justo, como, filtrando con grande, lo cual no tiene mucho sentido. Si tú también la buscabas. Yo diría que ustedes también pasarían especies, pero no estamos limitando eso. Y los filtros en la naturaleza deberían ser como esa dinámica. Entonces estoy como, publicando que va a ser el caso aquí. De acuerdo, entonces lo siguiente que vamos a hacer es que vamos a actualizar estos h ref. Um, viable es decir, lo siguiente Va a ser ahora malo h ref y luego por ciento de página. Y de esa forma vamos a tener va a ser usando la nueva plantilla para el para tus ojos que estamos encontrando aquí. Entonces lo mismo aquí. Y finalmente el de aquí. Impresionante. Entonces eso es eso. Entonces digamos eso y probémoslo. Entonces ahora mismo, si hago mascotas a continuación, comprueba que eso está funcionando. Entonces eso se ve bien. Y el se ve que la plantilla ing o son un treff viable está funcionando bien ahí dentro. Um, pero ahora sigamos adelante y busquemos solamente perros. Entonces vamos a hacer ah, especies igual a perro y notaré que estoy haciendo ah, mayúscula o mayúscula en la D porque así es la forma en que se almacena en el, um, en los objetos de datos podríamos masa eso, ya sabes, con minúsculas. Pero tendríamos que guardar todos los objetos para tener eso, um, ni casos. Bueno, vamos a escribir eso. Y perfecto. Ahora veo que la A traicionera apuesta Ph uno y especies iguales pegadas, que es la corriente una deriva. Y ahora ves que solo consigo, um, um, muelles aquí, lo cual es bastante guay. Um, y eso parece estar funcionando Bien. Y luego vamos a ah, chequear por el otro filtro, que es la raza. ¿ Verdad? Entonces vamos a hacer y criar igual a Ah, mierdas. Sue y luego enviar. Está bien. Perfecto. Por lo que tropiezan ahora refleja que es un espacio físico empezando a criar hoja igual. Entonces y ahora solo consigo un perro, que es mi perro, Mac. Um, tan perfecto. Entonces eso es todo. Eso es ah, cómo podemos hacer filtros. Y puedes pensar en encender filtros para, como, las tiendas, por ejemplo. Se desea conseguir las tiendas en un barrio específico o código de sentarse. Ya sabes, el cielo es el límite. Un trabajo tan impresionante. 36. Conclusión: De acuerdo, así que eso es todo. Hemos llegado a la conclusión fuera del curso. Espero que hayas aprendido un poco sobre el descanso ful Fundamentos del FBI Qué significa ser un descanso ful, un p I y cómo dedo del pie usó las vistas globales del matraz para hacer plataformas AP I muy simples y muy escalables . Ahora, claro, ese es el siguiente paso. Te recomendaré echar un vistazo a algunas de las bibliotecas A P I por ahí. Creo que el más popular es un matraz descanso ful. Y, ah, ya sabes, potencialmente podría hacer, ah, ah, video de YouTube. Asegúrate de revisar mi canal de video de YouTube con tal vez asegurado, como, tutorial en él. Pero creo que es mejor esta forma de aprender cómo toe construir el en una plataforma P I desde, como scratch sin usar ninguna de estas bibliotecas, porque entonces se llega a apreciar lo que va detrás de bambalinas y exactamente por qué las bibliotecas son haciendo las cosas que están haciendo. Entonces muchas gracias por completar el curso, y ya veremos en el siguiente