Módulo 5
APIs REST
Las dos caras de una API: consumirlas bien, con sus errores y sus límites, y escribirlas con Django REST Framework y con FastAPI, hasta dejarlas documentadas y desplegadas.
📚 30 lecciones
⏱ 480 min en total
- 1Qué es una API RESTLa misma información en 315 KB o en 6,8 KB, y por qué la segunda forma es la que permite que dos programas se entiendan.14 min
- 2HTTP para APIsLos códigos que de verdad devuelven, el cuerpo de error que cada API se inventa por su cuenta, y la petición que ahorra seis mil bytes y gasta cuota igual.15 min
- 3JSONLos cuatro tipos de Python que se transforman en otra cosa sin avisar, el precio que sale a 199,89999999999998, y las fechas que JSON no sabe guardar.15 min
- 4Consumir APIs con la biblioteca estándarTres líneas para la primera petición, treinta para una que aguante, y la excepción que en realidad es una respuesta.14 min
- 5requests desde ceroVeinticinco líneas convertidas en una, la sesión que va casi tres veces más rápido, y el `if respuesta:` que parece correcto y se traga los errores.15 min
- 6Parámetros, cabeceras y cuerposEl filtro que desaparece sin dejar rastro, el booleano que llega con mayúscula, y los cuatro cuerpos que se pueden mandar.14 min
- 7Autenticación: claves, tokens y OAuthSesenta peticiones por hora contra cinco mil, el token que cualquiera puede leer, y el secreto que sobrevive a una redirección.16 min
- 8Errores y reintentosEl reintentador que no reintenta, el primer reintento que no espera nada, y la excepción que te esconde el cuerpo del error.15 min
- 9Paginación y límites de usoCuatro formas de pedir la página siguiente, la fila que se lee dos veces, y el 403 que no trae Retry-After y por tanto tu reintentador ignora.15 min
- 10Proyecto: un cliente de una API públicaCuatro capas, veintitrés pruebas sin tocar internet, y dos sorpresas: un fallo que encontró la suite y un número que dice la verdad y miente.22 min
- 11Diseñar los recursos y las rutasLas decisiones que hay que tomar antes de escribir una línea, y por qué la API no debe parecerse a tus tablas.14 min
- 12Instalación y primer punto de accesoUna API funcionando en veinte líneas, y las tres cosas que trae apagadas de fábrica: una de ellas deja que cualquiera borre tus datos.16 min
- 13SerializadoresLa pieza central de DRF, los tres sitios donde validar, y el `PATCH` con una errata que contesta 200 sin cambiar nada.16 min
- 14ModelSerializer y relacionesCuatro líneas que generan once campos, y el listado que pasa de 2 consultas a 399 por enseñar el nombre de la editorial.17 min
- 15Vistas de API y genéricasCuatro capas de abstracción, los diez renglones que hay detrás de cada una, y el `201` al que le falta una cabecera.16 min
- 16ViewSet y enrutadoresUna clase por recurso, las acciones que no caben en los cinco verbos, y el dinero que vuelve a ser un número en cuanto te saltas el serializador.16 min
- 17Autenticación con tokens y JWTEl token que se guarda en claro y no caduca, el JWT que consulta la base de datos igual que él, y la palabra que hay que escribir para que te dejen entrar.17 min
- 18PermisosEl permiso de objeto que no se llama en el listado, y la acción propia por la que un desconocido borra la reseña de otro.17 min
- 19Filtros, búsqueda y ordenaciónEl filtro con una errata que devuelve las doscientas filas creyendo que filtró, y la búsqueda que no encuentra a Óscar si lo escribes en minúscula.16 min
- 20PaginaciónLas tres formas que trae DRF, la fila que aparece dos veces al recorrer un listado, y el contador que cuesta una consulta por página.15 min
- 21Documentar con OpenAPISetenta operaciones documentadas solas, ninguna con un error, y un campo que la documentación dice que es texto y devuelve una lista.15 min
- 22Versionado y pruebasCómo cambiar una API sin romper a quien la usa, y las once pruebas de las cuales dos fallan a propósito.17 min
- 23Introducción a FastAPILa misma API en cincuenta líneas, diez veces más rápida serializando, y el error de validación que te devuelve la contraseña que acabas de rechazar.16 min
- 24Rutas y parámetrosCómo decide FastAPI de dónde sale cada dato, la ruta que deja de funcionar por declararla en el orden equivocado, y la anotación que impide publicar una contraseña.15 min
- 25Pydantic y validaciónLo que convierte en silencio, la palabra `yes` que vale y `sí` que no, y la línea que arregla el fallo de la lección 13.16 min
- 26Base de datos y asincroníaMontar el ORM que FastAPI no trae, y la medida que enseña que escribir `async` mal es siete veces peor que no escribirlo.18 min
- 27Autenticación en FastAPITodo a mano y en cuarenta líneas, los 86 milisegundos que paran el servidor, y el argumento sin el cual PyJWT se niega a funcionar.17 min
- 28Pruebas y documentaciónSustituir una dependencia en una línea, la base de datos nueva para cada prueba, y el esquema que no puede mentir.15 min
- 29Desplegar una APIDos cabeceras donde Django ponía seis, el número de trabajadores que no es el de siempre, y el arranque que se ejecuta una vez por proceso.16 min
- 30Proyecto final: una API completaReunir las veintinueve lecciones en una API que funciona, con los fallos silenciosos del curso ya cerrados, y el bucle infinito que apareció al montarla.20 min