{"version":1,"pages":[{"id":"-LKmGSg5yQGKKRTvGql3","title":"Servicios REST con ASP.NET Core y Entity Framework Core","pathname":"/net-core","siteSpaceId":"sitesp_illA0","description":"Tutorial para crear servicios REST con Entity Framework Core"},{"id":"-LL2W6VtJF_v4s7VlF7k","title":"1. Introducción","pathname":"/net-core/introduccion","siteSpaceId":"sitesp_illA0","description":""},{"id":"-LKmrohTss4WRQ6mmWqP","title":"1.1 Instalación Visual Studio Community","pathname":"/net-core/introduccion/instalacion-asp-.net-core","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"1. Introducción"}]},{"id":"-LKyAu2Rk2yDDkSw9-J7","title":"1.2 Instalación de SQL Server en Mac","pathname":"/net-core/introduccion/2.-instalacion-de-sql-server-en-mac","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"1. Introducción"}]},{"id":"-LOFe7x2246_E46e5hwO","title":"1.3 Extensión Intellicode","pathname":"/net-core/introduccion/3.6-extension-intellicode","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"1. Introducción"}]},{"id":"-LKs8xReAYIxiWVfREl2","title":"1.4 Aplicación de ejemplo","pathname":"/net-core/introduccion/aplicacion-de-ejemplo","siteSpaceId":"sitesp_illA0","description":"Aplicación para registrar fechas de caducidad de productos de difentes clientes","breadcrumbs":[{"label":"1. Introducción"}]},{"id":"-LNYGJQ0XRIafRk2DhFK","title":"2. Explicación de Conceptos","pathname":"/net-core/3.-servicios-rest","siteSpaceId":"sitesp_illA0","description":""},{"id":"-LNzOt1tcb70D3kLz2Ek","title":"2.1 Servicios REST","pathname":"/net-core/3.-servicios-rest/3.1-servicios-rest","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"}]},{"id":"-LaHHO29af79lgFxX4TX","title":"2.1.1 OData","pathname":"/net-core/3.-servicios-rest/3.1-servicios-rest/3.1.1-odata","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"},{"label":"2.1 Servicios REST"}]},{"id":"-LaHHvt-3t8uTJ9DriQg","title":"2.1.2 GraphQL","pathname":"/net-core/3.-servicios-rest/3.1-servicios-rest/3.1.2-graphql","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"},{"label":"2.1 Servicios REST"}]},{"id":"-LNmwczQhvIUkCCoY_YB","title":"2.2 Entity Framework para versiones de tu base de datos","pathname":"/net-core/3.-servicios-rest/3.1-generar-versiones-de-tu-base-de-datos","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"}]},{"id":"-LNxDYYwqXXyED0IA62c","title":"2.3 Paquetes Nuget","pathname":"/net-core/3.-servicios-rest/3.3-paquetes-nuget","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"}]},{"id":"-LOBC09VuV-MEPyV3nNd","title":"2.4 Archivo de recursos","pathname":"/net-core/3.-servicios-rest/3.4-archivo-de-recursos","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"}]},{"id":"-LNrt9MQvzk4xxpyWZfK","title":"2.5 Estructura de los Proyectos .Net Core","pathname":"/net-core/3.-servicios-rest/3.1-estructura-del-proyecto","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"}]},{"id":"-LP9P_BNr_lWlu5Rkdqo","title":"2.6 Código Limpio","pathname":"/net-core/3.-servicios-rest/4.7-refactorizando-tu-codigo","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"}]},{"id":"-LQJy9BpaIaEnWkOQdbC","title":"2.7 Programación asíncrona","pathname":"/net-core/3.-servicios-rest/3.9-programacion-asincrona","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"}]},{"id":"-M18eA0gwiRsN2N1kTCo","title":"2.8 Git","pathname":"/net-core/3.-servicios-rest/3.10-git","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"}]},{"id":"-M8OEJ3rC3mPRjBwO42b","title":"2.9 ¿Qué es Scrum?","pathname":"/net-core/3.-servicios-rest/2.9-que-es-scrum","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"}]},{"id":"-M8rrn5sfMAWCjMNArEo","title":"2.9.1 Personas","pathname":"/net-core/3.-servicios-rest/2.9-que-es-scrum/2.9.1-personas","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"},{"label":"2.9 ¿Qué es Scrum?"}]},{"id":"-M8TNnC-MIsfOgv9VBpl","title":"2.9.2 Roles Scrum","pathname":"/net-core/3.-servicios-rest/2.9-que-es-scrum/2.9.1-roles-scrum","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"},{"label":"2.9 ¿Qué es Scrum?"}]},{"id":"-M8TNwsEeW0rU11C55gq","title":"2.9.3 Backlog","pathname":"/net-core/3.-servicios-rest/2.9-que-es-scrum/2.9.2-backlog","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"},{"label":"2.9 ¿Qué es Scrum?"}]},{"id":"-M8TO7AleovIsyUlHYmB","title":"2.9.4 Reuniones del Scrum","pathname":"/net-core/3.-servicios-rest/2.9-que-es-scrum/2.9.3-flujo-de-trabajo","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"2. Explicación de Conceptos"},{"label":"2.9 ¿Qué es Scrum?"}]},{"id":"-LL2aQ2ooYQFXFkw26aN","title":"3. Control de código fuente y Scrum con Azure DevOps","pathname":"/net-core/tu-primer-aplicacion","siteSpaceId":"sitesp_illA0","description":"Como compartir tu código con GitHub y Azure DevOps"},{"id":"-LL2fiKCNp3iyUNL4mRg","title":"3.1 Introducción a Azure DevOps","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"}]},{"id":"-LMp5H1Mndq7uyDOOwID","title":"3.1.1 Crear un nuevo Proyecto en Azure DevOps","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/2.2.1-crear-un-nuevo-proyecto","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"}]},{"id":"-LkCUQBminJBPWTGfDam","title":"3.1.2 Agregando personas al equipo de trabajo","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/2.1.2-agregando-personas-al-equipo-de-trabajo","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"}]},{"id":"-M8rwMm_B25VY-CX4INq","title":"3.1.3 Agregando los sprints y la capacidad de trabajo","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/3.1.3-agregando-los-sprints-y-la-capacidad-de-trabajo","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"}]},{"id":"-LMp6eD9g3vytpYSm6Xt","title":"3.1.4 Crear el Backlog y asignar User Stories al Sprint","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/2.2.2-agregar-backlogs-y-tareas","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"}]},{"id":"-LMp7BC-8jh_61U__jZB","title":"3.1.5 Crear Prototipos","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/2.2.3-crear-prototipos","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"}]},{"id":"-M75cbEVqUgCh2Iaub-i","title":"3.1.6 Conectar a Azure DevOps desde Visual Studio","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/3.1.5-conectar-a-azure-devops-desde-visual-studio","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"}]},{"id":"-LMp7YY6dwVQhwVo7wHF","title":"3.1.6.1 Crear tu proyecto con Visual Studio Community y sincronizarlo a Azure DevOps","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/3.1.5-conectar-a-azure-devops-desde-visual-studio/2.2.4-crear-el-proyecto-y-sincronizarlo-con-visual-studio-team-services","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"},{"label":"3.1.6 Conectar a Azure DevOps desde Visual Studio"}]},{"id":"-LMuCl81tktRC7yZ4w2g","title":"3.1.7 Consultar tus tareas pendientes","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/2.2.5-consultar-tus-tareas-pendientes","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"}]},{"id":"-M75qmJCQjWhl99EJuzT","title":"3.1.7.1 Tareas y Dashboards con Azure DevOps","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/2.2.5-consultar-tus-tareas-pendientes/3.1.6.1-tareas-y-dashboards-con-azure-devops","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"},{"label":"3.1.7 Consultar tus tareas pendientes"}]},{"id":"-M75eveGC5YRrByMhFNs","title":"3.1.7.2 Consultar tus tareas desde Visual Studio Community","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/2.2.5-consultar-tus-tareas-pendientes/3.1.5.1-consultar-tus-tareas-desde-visual-studio-community","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"},{"label":"3.1.7 Consultar tus tareas pendientes"}]},{"id":"-M75qOklGeXMTBidcOk0","title":"3.1.8 Trabajando con Ramas (Branches)","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/3.1.7-trabajando-con-ramas-branches-en-visual-studio","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"}]},{"id":"-M8s6ycZwbta3YVXnKwR","title":"3.1.8.1 Crear la rama desarrollo desde Azure DevOps","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/3.1.7-trabajando-con-ramas-branches-en-visual-studio/3.1.6.7-crear-branches-para-tus-tareas","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"},{"label":"3.1.8 Trabajando con Ramas (Branches)"}]},{"id":"-M96JIALmIBcr_67Y7Ws","title":"3.1.8.1 Crear una rama(branch) desde tu tarea en Azure DevOps","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/3.1.7-trabajando-con-ramas-branches-en-visual-studio/3.1.6.7-crear-branches-para-tus-tareas/3.1.8.2-crear-una-rama-branch-para-tus-tareas-desde-azure-devops","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"},{"label":"3.1.8 Trabajando con Ramas (Branches)"},{"label":"3.1.8.1 Crear la rama desarrollo desde Azure DevOps"}]},{"id":"-M9BRlOgJR_AgdCA3dfO","title":"3.1.8.2 Como trabajar con ramas (branches) desde Visual Studio Community","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/3.1.7-trabajando-con-ramas-branches-en-visual-studio/3.1.8.3-crear-una-rama-branch-desde-visual-studio-community","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"},{"label":"3.1.8 Trabajando con Ramas (Branches)"}]},{"id":"-M9R0va0F_5Wf3_9C_06","title":"3.1.8.3 Crear el Pull Request con Azure DevOps","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/3.1.7-trabajando-con-ramas-branches-en-visual-studio/3.1.8.3-crear-el-pull-request-con-azure-devops","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"},{"label":"3.1.8 Trabajando con Ramas (Branches)"}]},{"id":"-M9uqD65peIy7dfmUHPG","title":"3.1.9 Retrospectiva del Sprint","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/3.1.9-retrospectiva-del-sprint","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"}]},{"id":"-MB6zqTjf5M64x6kjpeD","title":"3.1.10 Agregando una Wiki","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-visual-studio-team-services/3.1.10-agregando-una-wiki","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.1 Introducción a Azure DevOps"}]},{"id":"-LL2fx-BPnf3vzF-f_Xl","title":"3.2 Integrando tu código fuente a GitHub","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-github","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"}]},{"id":"-M1H8Dj21wybaAmqB02v","title":"3.2.1 Trabajando con ramas en GitHub","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-github/3.10.1-creando-ramas-en-github","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.2 Integrando tu código fuente a GitHub"}]},{"id":"-LO1OuXBuh43EM-uHU-2","title":"3.2.2 Sincronizar los cambios del código con GitHub y Visual Studio","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-github/3.4-sincronizar-los-cambios-del-codigo-con-github","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.2 Integrando tu código fuente a GitHub"}]},{"id":"-M75of8KBxvFP7ef2cOf","title":"3.3 Trabajando con Branches (Ramas) con Visual Studio","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-github/3.3-trabajando-con-branches-ramas-con-visual-studio","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.2 Integrando tu código fuente a GitHub"}]},{"id":"-M1NOzxVE1_PmhHQAfC9","title":"3.3.1 Branches con Visual Studio","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-github/3.3-trabajando-con-branches-ramas-con-visual-studio/3.10.2-trabajando-con-ramas-con-visual-studio","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.2 Integrando tu código fuente a GitHub"},{"label":"3.3 Trabajando con Branches (Ramas) con Visual Studio"}]},{"id":"22BNAjiYkAofWHMQNqLC","title":"3.3.2 Creando un template para tus PR (Pull Request)","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-github/3.3-trabajando-con-branches-ramas-con-visual-studio/3.3.2-creando-un-template-para-tus-pr-pull-request","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.2 Integrando tu código fuente a GitHub"},{"label":"3.3 Trabajando con Branches (Ramas) con Visual Studio"}]},{"id":"63cJRJkRe4u8QbthHFZg","title":"3.3.3 Protegiendo tu branch","pathname":"/net-core/tu-primer-aplicacion/integrando-tu-codigo-fuente-a-github/3.3-trabajando-con-branches-ramas-con-visual-studio/3.3.3-protegiendo-tu-branch","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"3. Control de código fuente y Scrum con Azure DevOps"},{"label":"3.2 Integrando tu código fuente a GitHub"},{"label":"3.3 Trabajando con Branches (Ramas) con Visual Studio"}]},{"id":"-LOAovvyJWGHdZZt4Eqs","title":"4. Creando tu primer servicio","pathname":"/net-core/4.-creando-tu-primer-servicio","siteSpaceId":"sitesp_illA0","description":""},{"id":"-LOApwsqOSpKHdC8B2Iy","title":"4.1 Crear las base de datos y los usuarios en MySQL","pathname":"/net-core/4.-creando-tu-primer-servicio/creando","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"4. Creando tu primer servicio"}]},{"id":"-LOBD92KtO7NF2YK0Vl4","title":"4.2 Crear la tabla Categoría y sus validaciones","pathname":"/net-core/4.-creando-tu-primer-servicio/4.2-crear-las-tablas","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"4. Creando tu primer servicio"}]},{"id":"-LOLyfmnRPPTgQ2Dhdmh","title":"4.3 Creando el servicio Categorias","pathname":"/net-core/4.-creando-tu-primer-servicio/4.3-creando-el-servicio","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"4. Creando tu primer servicio"}]},{"id":"-LOR9IkMElKadfTde2-b","title":"4.4 Probando tus servicios con POSTMAN","pathname":"/net-core/4.-creando-tu-primer-servicio/4.4-probando-tus-servicios-con-postman","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"4. Creando tu primer servicio"}]},{"id":"-LOaQOQNucDxTRnw8vJj","title":"4.5 Documentar y Probar tus servicios con Swagger","pathname":"/net-core/4.-creando-tu-primer-servicio/4.5-documentar-y-probar-tus-servicios-con-swagger","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"4. Creando tu primer servicio"}]},{"id":"-LOaSCyFM8PvF0ETFlgO","title":"4.5.1 Configurar Swagger","pathname":"/net-core/4.-creando-tu-primer-servicio/4.5-documentar-y-probar-tus-servicios-con-swagger/4.5.1-configurar-swagger","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"4. Creando tu primer servicio"},{"label":"4.5 Documentar y Probar tus servicios con Swagger"}]},{"id":"-LOuzaLdjdCv5FC99OfH","title":"4.5.2 Comentarios XML","pathname":"/net-core/4.-creando-tu-primer-servicio/4.5-documentar-y-probar-tus-servicios-con-swagger/4.5.2-comentarios-xml","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"4. Creando tu primer servicio"},{"label":"4.5 Documentar y Probar tus servicios con Swagger"}]},{"id":"-LP-4TV2xdH0WsAzPi04","title":"4.5.3 Generando la página de documentación","pathname":"/net-core/4.-creando-tu-primer-servicio/4.5-documentar-y-probar-tus-servicios-con-swagger/4.5.3-generando-la-pagina-de-documentacion","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"4. Creando tu primer servicio"},{"label":"4.5 Documentar y Probar tus servicios con Swagger"}]},{"id":"-LP4MBgXzTfHGop9cXuB","title":"4.6 Agregando índices","pathname":"/net-core/4.-creando-tu-primer-servicio/4.5.4-agregando-indices","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"4. Creando tu primer servicio"}]},{"id":"-LQCdohWgb7X49e5_IqN","title":"4.7 Mejorando tu código","pathname":"/net-core/4.-creando-tu-primer-servicio/4.7-mejorando-tu-codigo","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"4. Creando tu primer servicio"}]},{"id":"-LQHgMY32PKwM7zA854d","title":"4.7.1 Creando Objetos de Accesos a Datos","pathname":"/net-core/4.-creando-tu-primer-servicio/4.7-mejorando-tu-codigo/4.7.1-creando-objetos-de-accesos-a-datos","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"4. Creando tu primer servicio"},{"label":"4.7 Mejorando tu código"}]},{"id":"-LQqsuYDQx3MXjV4B1DY","title":"4.7.2 Creando tus mensajes de error en diferentes idiomas","pathname":"/net-core/4.-creando-tu-primer-servicio/4.7-mejorando-tu-codigo/4.7.2-creando-tus-mensajes-de-error-en-un-archivo-de-recursos","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"4. Creando tu primer servicio"},{"label":"4.7 Mejorando tu código"}]},{"id":"-LRKc2DMbJtyyfaLOLxw","title":"4.7.3 Cambiando el formato del Json de los servicios","pathname":"/net-core/4.-creando-tu-primer-servicio/4.7-mejorando-tu-codigo/4.7.3-cambiando-el-formato-del-json-de-los-servicios","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"4. Creando tu primer servicio"},{"label":"4.7 Mejorando tu código"}]},{"id":"-LRKhxv7fPjq3P2L8mpN","title":"5. Agregando el servicio para los productos","pathname":"/net-core/5.-agregando-el-servicio-para-los-productos","siteSpaceId":"sitesp_illA0","description":""},{"id":"-LSIRTnxAsfkFiSEBZYk","title":"5.1 Crear la tabla de Productos","pathname":"/net-core/5.-agregando-el-servicio-para-los-productos/5.1-crear-la-tabla-de-productos","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"5. Agregando el servicio para los productos"}]},{"id":"-LSXtb1lD9H_mHoXu8qk","title":"5.2 Formas de cargar información de tablas relacionadas","pathname":"/net-core/5.-agregando-el-servicio-para-los-productos/5.2-crear-las-llaves-foraneas-e-indices","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"5. Agregando el servicio para los productos"}]},{"id":"-LSr_pg5vcU438h2T_u6","title":"5.3 Crear llaves fóraneas e índices","pathname":"/net-core/5.-agregando-el-servicio-para-los-productos/5.3-crear-llaves-foraneas-e-indices","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"5. Agregando el servicio para los productos"}]},{"id":"-LT0xlejIvlfTMIp42Bz","title":"5.4 Creando el servicio Productos","pathname":"/net-core/5.-agregando-el-servicio-para-los-productos/5.4-creando-el-servicio-productos","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"5. Agregando el servicio para los productos"}]},{"id":"-LTQQ5foQgVLzuNBTLdL","title":"5.5 Validar Reglas Mejorando tu código","pathname":"/net-core/5.-agregando-el-servicio-para-los-productos/5.4-mejorando-tu-codigo","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"5. Agregando el servicio para los productos"}]},{"id":"-LTQUffYuRKgIDmG-H53","title":"5.5.1 Agregando una excepción a todos nuestros servicios","pathname":"/net-core/5.-agregando-el-servicio-para-los-productos/5.4-mejorando-tu-codigo/5.4.1-agregando-una-excepcion-a-todos-nuestros-servicios","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"5. Agregando el servicio para los productos"},{"label":"5.5 Validar Reglas Mejorando tu código"}]},{"id":"-LU8rv296VWft2XZvGVT","title":"5.5.2 Agregando clases genéricas para validar y/o consultar información","pathname":"/net-core/5.-agregando-el-servicio-para-los-productos/5.4-mejorando-tu-codigo/5.4.2-agregando-una-clase-generica-para-las-tablas-de-las-bases-de-datos","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"5. Agregando el servicio para los productos"},{"label":"5.5 Validar Reglas Mejorando tu código"}]},{"id":"-LX2K54sqHvcZGGWRxsW","title":"5.5.3 Alternativa para validar reglas con ef core","pathname":"/net-core/5.-agregando-el-servicio-para-los-productos/5.4-mejorando-tu-codigo/5.4.3-alternativa-para-validar-tablas","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"5. Agregando el servicio para los productos"},{"label":"5.5 Validar Reglas Mejorando tu código"}]},{"id":"-LXXJYDSmPe8fEf-xaa6","title":"6. Cambiar de base de datos a SQL Server","pathname":"/net-core/cambiar-los-servicios-a-sql-server","siteSpaceId":"sitesp_illA0","description":""},{"id":"-LXvvE1Mg60breRrE6hK","title":"6.1 Cambiar la base de datos a SQL Server","pathname":"/net-core/cambiar-los-servicios-a-sql-server/6.1-cambiar-la-base-de-datos-a-sql-server","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"6. Cambiar de base de datos a SQL Server"}]},{"id":"-LYjWa9WmOvrPpgqbryH","title":"6.2 Cambiar a SQL Server en Azure","pathname":"/net-core/cambiar-los-servicios-a-sql-server/6.1.1-cambiar-a-sql-server-en-azure","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"6. Cambiar de base de datos a SQL Server"}]},{"id":"-LZ8CBW6t-ITOLLTdQWC","title":"7. Crear servicios con OData","pathname":"/net-core/6.2-configurar-tus-servicios-con-odata","siteSpaceId":"sitesp_illA0","description":""},{"id":"-Lfwb96n_0U3ExmG2pd0","title":"7.1.1 Creando el modelo Clientes","pathname":"/net-core/6.2-configurar-tus-servicios-con-odata/6.2.1-creando-el-modelo-clientes","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"7. Crear servicios con OData"}]},{"id":"-Lfwbc9ACdkqrqMXv_ip","title":"7.1.2 Creando el modelo ClienteCategoría","pathname":"/net-core/6.2-configurar-tus-servicios-con-odata/6.2.2-creando-el-modelo-clientecategoria","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"7. Crear servicios con OData"}]},{"id":"-LfwbxvMxbZzlnezmI6z","title":"7.1.3 Agregando paquete Nuget para OData","pathname":"/net-core/6.2-configurar-tus-servicios-con-odata/6.2.3-agregando-paquete-nuget","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"7. Crear servicios con OData"}]},{"id":"-Lg0X_GE_qegTZZ04QZE","title":"7.1.4 Configurar el EDM Model","pathname":"/net-core/6.2-configurar-tus-servicios-con-odata/6.2.4-configurar-el-edm-model","siteSpaceId":"sitesp_illA0","description":"Configurar en Startup el Entity Data Model","breadcrumbs":[{"label":"7. Crear servicios con OData"}]},{"id":"-Lg0XoYGiNGgM8Q26H1U","title":"7.1.5 Configurar el servicio OData y llaves foráneas","pathname":"/net-core/6.2-configurar-tus-servicios-con-odata/6.2.5-configurar-el-servicio-odata","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"7. Crear servicios con OData"}]},{"id":"-Lg0YPKEnEZ3I2iU96IK","title":"7.1.6 Creando el Controller para clientes","pathname":"/net-core/6.2-configurar-tus-servicios-con-odata/6.2.7-creando-el-controller-para-clientes","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"7. Crear servicios con OData"}]},{"id":"-Lg0Zg63uv4VsqRlgtKJ","title":"7.1.7 Configurar y probar los servicios con OData","pathname":"/net-core/6.2-configurar-tus-servicios-con-odata/6.2.8-configurando-odata-en-el-archivo-startup.cs","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"7. Crear servicios con OData"}]},{"id":"-MBl9FDg2eveFwCoUogY","title":"7.1.8 Práctica Crear el servicio para ClientesCategorias","pathname":"/net-core/6.2-configurar-tus-servicios-con-odata/7.1.8-practica-crear-el-servicio-para-clientescategorias","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"7. Crear servicios con OData"}]},{"id":"-MA44sMU5Ctj4lsLgea4","title":"7.1.9 Recomendaciones de seguridad y rendimiento a tomar en cuenta con OData","pathname":"/net-core/6.2-configurar-tus-servicios-con-odata/6.2.9-recomendaciones-de-seguridad-y-rendimiento-a-tomar-en-cuenta-con-odata","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"7. Crear servicios con OData"}]},{"id":"-L_zdpkOO4e98byqRdrS","title":"8. GraphQL","pathname":"/net-core/6.3-agregar-graphql","siteSpaceId":"sitesp_illA0","description":""},{"id":"-Letb0PnjSmZg1C5PQyi","title":"8.1.1 Creando la tabla Caducidad","pathname":"/net-core/6.3-agregar-graphql/6.3.1.-creando-la-tabla-caducidad","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"8. GraphQL"}]},{"id":"-LeyhnebAU-_CJKFRF_-","title":"8.1.2 Creando el query","pathname":"/net-core/6.3-agregar-graphql/6.3.3-creando-el-query","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"8. GraphQL"}]},{"id":"RPwRzxeR2MKUKP28kwMP","title":"8.1.3 Configurando y probando graphQL","pathname":"/net-core/6.3-agregar-graphql/8.1.3-configurando-y-probando-graphql","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"8. GraphQL"}]},{"id":"-Lfh-uDj4ZNQUZXXP_w8","title":"8.1.4 Creando la Mutation","pathname":"/net-core/6.3-agregar-graphql/6.3.4-creando-la-mutation","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"8. GraphQL"}]},{"id":"-LeysRkSpKbvbKYlqVw5","title":"8.1.5 Probando nuestros servicios con Postman","pathname":"/net-core/6.3-agregar-graphql/6.3.6-probando-nuestros-servicios","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"8. GraphQL"}]},{"id":"-Lb1YhcGRJUIkSzsmE3y","title":"9. Seguridad","pathname":"/net-core/7.-seguridad","siteSpaceId":"sitesp_illA0","description":""},{"id":"-Lg0jXU3kmb23eQ0HWxu","title":"9.1 Json Web Tokens","pathname":"/net-core/7.-seguridad/7.1-json-web-tokens","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"}]},{"id":"-Lg0kMAPWW4a9Ot2RhrQ","title":"9.2 Seguridad basada en roles y usuarios","pathname":"/net-core/7.-seguridad/7.2-seguridad-basada-en-roles","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"}]},{"id":"-LgAq3lKkHJXO_lIfd58","title":"9.2.1 Creando nuestra tabla roles e insertando los roles principales","pathname":"/net-core/7.-seguridad/7.2-seguridad-basada-en-roles/7.3-creando-nuestra-tabla-roles-e-insertando-los-3-roles-principales","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"},{"label":"9.2 Seguridad basada en roles y usuarios"}]},{"id":"-LgVSOJo6or8lBomGZYl","title":"9.2.2 Consideraciones de seguridad para almacenar tus passwords","pathname":"/net-core/7.-seguridad/7.2-seguridad-basada-en-roles/7.4-consideraciones-de-seguridad-para-almacenar-tus-passwords","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"},{"label":"9.2 Seguridad basada en roles y usuarios"}]},{"id":"-LgVf7QzZ0FDriiI3VcS","title":"9.2.3 Creando las tablas para manejar la seguridad","pathname":"/net-core/7.-seguridad/7.2-seguridad-basada-en-roles/7.5-creando-tu-tabla-usuarios","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"},{"label":"9.2 Seguridad basada en roles y usuarios"}]},{"id":"-Lh8kU4TGVfNuT3pXc4h","title":"9.2.4 Agregando usuarios y roles","pathname":"/net-core/7.-seguridad/7.2-seguridad-basada-en-roles/7.6-agregando-usuarios-y-roles","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"},{"label":"9.2 Seguridad basada en roles y usuarios"}]},{"id":"-LhOFg-lNYC9pUq4oxml","title":"9.3 Agregando seguridad a nuestros servicios","pathname":"/net-core/7.-seguridad/7.7-agregando-seguridad-a-nuestros-servicios","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"}]},{"id":"-Lhmw5KC8Jqy7eBqsQGO","title":"9.4 Creando nuestro servicio de login y generar el token","pathname":"/net-core/7.-seguridad/7.7-creando-nuestro-servicio-de-login-y-generar-el-token","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"}]},{"id":"-LiM-7n4sFv30DvzpLQi","title":"9.5 ¿Cómo agregar seguridad basada en roles a los Servicios REST?","pathname":"/net-core/7.-seguridad/7.9-como-agregar-seguridad-basada-en-roles-a-los-servicios-rest","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"}]},{"id":"-LiR8uz0AR1ngch-BO92","title":"9.5.1 Seguridad basada en claims","pathname":"/net-core/7.-seguridad/7.9-como-agregar-seguridad-basada-en-roles-a-los-servicios-rest/7.10-seguridad-con-reglas-personalizadas","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"},{"label":"9.5 ¿Cómo agregar seguridad basada en roles a los Servicios REST?"}]},{"id":"-Lj-GobkPBZylV9L9pGx","title":"9.5.2 Creando las tablas para validar permisos por cada tabla","pathname":"/net-core/7.-seguridad/7.9-como-agregar-seguridad-basada-en-roles-a-los-servicios-rest/7.11-seguridad-basada-en-directivas","siteSpaceId":"sitesp_illA0","description":"Agregar permisos para crear, borrar, modificar, consultar a cada tabla","breadcrumbs":[{"label":"9. Seguridad"},{"label":"9.5 ¿Cómo agregar seguridad basada en roles a los Servicios REST?"}]},{"id":"-LjJsvQ-DCDNZiKVBeBd","title":"9.5.3 Seguridad basada en directivas","pathname":"/net-core/7.-seguridad/7.9-como-agregar-seguridad-basada-en-roles-a-los-servicios-rest/7.12-seguridad-basada-en-directivas","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"},{"label":"9.5 ¿Cómo agregar seguridad basada en roles a los Servicios REST?"}]},{"id":"-Lkb5UGIHDQJgG5PMiSo","title":"9.5.4 Seguridad con Action Filters","pathname":"/net-core/7.-seguridad/7.9-como-agregar-seguridad-basada-en-roles-a-los-servicios-rest/7.13-seguridad-con-action-filters","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"},{"label":"9.5 ¿Cómo agregar seguridad basada en roles a los Servicios REST?"}]},{"id":"-LklROOJ_Fv8acm3k6fz","title":"9.6 Guardando el historial de cambios","pathname":"/net-core/7.-seguridad/7.14-guardando-el-historial-de-cambios","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"}]},{"id":"-Ll_0Yj9mnv1UPsWCYAm","title":"9.7 Refrescando tu token","pathname":"/net-core/7.-seguridad/7.7-refrescando-tu-token","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"}]},{"id":"-LlZz1D171ZRXGsYT-F1","title":"9.8 Seguridad Mejorando tu código","pathname":"/net-core/7.-seguridad/7.8-mejorando-tu-codigo","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"}]},{"id":"-LloVqhO3GOSocb4osIJ","title":"9.8.1 ¿Cómo limitar el número de intentos incorrectos en el login?","pathname":"/net-core/7.-seguridad/7.8-mejorando-tu-codigo/7.8.1-como-limitar-el-numero-de-intentos-incorrectos-en-el-login","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"},{"label":"9.8 Seguridad Mejorando tu código"}]},{"id":"-LmrH9KDPbxv54EgJlhf","title":"9.8.2 ¿Cómo obtener la ciudad del usuario por medio de la IP?","pathname":"/net-core/7.-seguridad/7.8-mejorando-tu-codigo/7.8.2-como-obtener-la-ciudad-del-usuario-por-medio-de-la-ip","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"},{"label":"9.8 Seguridad Mejorando tu código"}]},{"id":"-LsPXCJsDWb5n6PeXUgN","title":"9.8.3 Habilitando CORS","pathname":"/net-core/7.-seguridad/7.8-mejorando-tu-codigo/7.8.3-configurando-cors","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"9. Seguridad"},{"label":"9.8 Seguridad Mejorando tu código"}]},{"id":"-Lb1Ysb0d8NEiKkSIOlb","title":"10. Pruebas Unitarias","pathname":"/net-core/8.-pruebas-unitarias","siteSpaceId":"sitesp_illA0","description":""},{"id":"-Ls0-008dkAaVgctMgMt","title":"10.1 Agregando el proyecto de pruebas unitarias","pathname":"/net-core/8.-pruebas-unitarias/8.1-agregando-el-proyecto-de-pruebas-unitarias","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"10. Pruebas Unitarias"}]},{"id":"-Ls03N0yXv1Tasrx6l5O","title":"10.2 Crear una prueba unitaria","pathname":"/net-core/8.-pruebas-unitarias/8.2-creando-nuestra-primer-prueba-unitaria","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"10. Pruebas Unitarias"}]},{"id":"-LsEOGbtbS2zGzDTUUbT","title":"10.2.1 Ejecutando las pruebas unitarias","pathname":"/net-core/8.-pruebas-unitarias/8.2-creando-nuestra-primer-prueba-unitaria/8.2.1-ejecutando-las-pruebas-unitarias-en-windows","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"10. Pruebas Unitarias"},{"label":"10.2 Crear una prueba unitaria"}]},{"id":"-LsPm9VTBdY6dGId1qM9","title":"10.3 Agregando una base de datos en memoria para nuestras pruebas unitarias","pathname":"/net-core/8.-pruebas-unitarias/8.3-agregando-una-base-de-datos-en-memoria-para-nuestras-pruebas-unitarias","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"10. Pruebas Unitarias"}]},{"id":"-LsKpgg29oqgZSRLzCKe","title":"10.4 Agregando la referencia de nuestro proyecto CaducaRest","pathname":"/net-core/8.-pruebas-unitarias/8.3-agregando-la-referencia-de-nuestro-proyecto-caducarest","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"10. Pruebas Unitarias"}]},{"id":"-LsiDoT9fzBwJxQTgcS0","title":"10.4.1 Agregando paquetes nuget necesarios","pathname":"/net-core/8.-pruebas-unitarias/8.3-agregando-la-referencia-de-nuestro-proyecto-caducarest/8.4.1-agregando-paquetes-nuget-necesarios","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"10. Pruebas Unitarias"},{"label":"10.4 Agregando la referencia de nuestro proyecto CaducaRest"}]},{"id":"-LsiGKd-S9Fxlkp5XUHA","title":"10.5 Configurando Clases para Objetos Sustitutos","pathname":"/net-core/8.-pruebas-unitarias/8.5-configurando-clases-para-objetos-sustitutos","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"10. Pruebas Unitarias"}]},{"id":"-LshQMZKnM2o8IDrBZC1","title":"10.5.1 Configurando el Contexto para utilizar la base de datos en Memoria","pathname":"/net-core/8.-pruebas-unitarias/8.5-configurando-clases-para-objetos-sustitutos/8.5.1-configurando-el-contexto-para-utilizar-la-base-de-datos-en-memoria","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"10. Pruebas Unitarias"},{"label":"10.5 Configurando Clases para Objetos Sustitutos"}]},{"id":"-LsiGpB8D7Vmdgd7gnCe","title":"10.5.2 Configurando el objeto para sustituir mensajes de Error por idioma","pathname":"/net-core/8.-pruebas-unitarias/8.5-configurando-clases-para-objetos-sustitutos/8.5.2-configurando-el-objeto-para-sustituir-mensajes-de-error-por-idioma","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"10. Pruebas Unitarias"},{"label":"10.5 Configurando Clases para Objetos Sustitutos"}]},{"id":"-LseY0tD861MceRmnDF5","title":"10.6 Agregando pruebas para las Categorías","pathname":"/net-core/8.-pruebas-unitarias/8.5-agregando-pruebas-para-las-categorias","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"10. Pruebas Unitarias"}]},{"id":"-LsEOgHMqKOwlYubtnsh","title":"11. Integración continua","pathname":"/net-core/9.-integracion-continua","siteSpaceId":"sitesp_illA0","description":""},{"id":"-LsEQag-W5sRel0TiNnH","title":"11.1 ¿Qué es la integración continua?","pathname":"/net-core/9.-integracion-continua/9.1-que-es-la-integracion-continua","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"11. Integración continua"}]},{"id":"-LsEUw29PzkbEcvl3kgs","title":"11.2 Subir tu código fuente a BitBucket","pathname":"/net-core/9.-integracion-continua/9.2-creando-tu-repositorio-en-bitbucket","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"11. Integración continua"}]},{"id":"-LsERpp27xnK8eHAPN9O","title":"11.2.1 Integración continua y pruebas automáticas con Bitbucket","pathname":"/net-core/9.-integracion-continua/9.2-creando-tu-repositorio-en-bitbucket/9.3-integracion-continua-con-bitbucket","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"11. Integración continua"},{"label":"11.2 Subir tu código fuente a BitBucket"}]},{"id":"-LsiP2Gp_jkBXYWWuaSS","title":"11.3 Integración continua y pruebas automáticas en Azure DevOps","pathname":"/net-core/9.-integracion-continua/9.2.2-integracion-continua-con-azuredevops","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"11. Integración continua"}]},{"id":"-LsERPWzpMVOQZiWnF-3","title":"12. Pruebas de integración","pathname":"/net-core/10.-pruebas-de-integracion","siteSpaceId":"sitesp_illA0","description":""},{"id":"-LsnZ_MNwg4ipx1i9MEG","title":"12.1 ¿Qué es SpecFlow?","pathname":"/net-core/10.-pruebas-de-integracion/10.1-que-es-specflow","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"12. Pruebas de integración"}]},{"id":"-LsjCuzpzqrFNGuU7tkA","title":"12.2 Agregando el proyecto de pruebas de integración","pathname":"/net-core/10.-pruebas-de-integracion/10.1-agregando-el-proyecto-de-pruebas-de-integracion","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"12. Pruebas de integración"}]},{"id":"-LsnMuZaHlf3mwUAuii5","title":"12.3 Configurando Specflow","pathname":"/net-core/10.-pruebas-de-integracion/10.2-configurando-specflow","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"12. Pruebas de integración"}]},{"id":"-LsnS7wyLuzJD3vbitRA","title":"12.4 Creando pruebas para el login","pathname":"/net-core/10.-pruebas-de-integracion/10.3-creando-pruebas-para-el-login","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"12. Pruebas de integración"}]},{"id":"-M2uoxwv2jtTea5DSK7i","title":"12.5 Agregando las pruebas de Integración a Azure Devops","pathname":"/net-core/10.-pruebas-de-integracion/10.5-agregando-las-pruebas-de-integracion-a-azure-devops","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"12. Pruebas de integración"}]},{"id":"-LsoDE8_GP7wjdf5b6nX","title":"12.6 Specflow Mejorando tu código","pathname":"/net-core/10.-pruebas-de-integracion/10.5-mejorando-tu-codigo","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"12. Pruebas de integración"}]},{"id":"-LsoDJd7lXbHE1x8h7OL","title":"12.6.1 Cambiando las pruebas a español","pathname":"/net-core/10.-pruebas-de-integracion/10.5-mejorando-tu-codigo/10.5.1-cambiando-las-pruebas-a-espanol","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"12. Pruebas de integración"},{"label":"12.6 Specflow Mejorando tu código"}]},{"id":"-LsoDRgGnlar6lkvZCz7","title":"12.6.2 Pasando tablas a nuestras pruebas","pathname":"/net-core/10.-pruebas-de-integracion/10.5-mejorando-tu-codigo/10.5.2-pasando-tablas-a-nuestras-pruebas","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"12. Pruebas de integración"},{"label":"12.6 Specflow Mejorando tu código"}]},{"id":"qnJe2NvJUWVkLnzXxEHf","title":"12.6.3 Agregar los passwords como variables de ambiente","pathname":"/net-core/10.-pruebas-de-integracion/10.5-mejorando-tu-codigo/12.6.3-agregar-los-passwords-como-variables-de-ambiente","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"12. Pruebas de integración"},{"label":"12.6 Specflow Mejorando tu código"}]},{"id":"-LtIAYH8GQbgmMlSimgx","title":"12.6.4 Probando con SQLite","pathname":"/net-core/10.-pruebas-de-integracion/10.5-mejorando-tu-codigo/10.5.3-probando-con-sqlite","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"12. Pruebas de integración"},{"label":"12.6 Specflow Mejorando tu código"}]},{"id":"-LtMaIK5wh6qvkyhI8H0","title":"12.6.5 Agregando diferentes parámetros con MSTest","pathname":"/net-core/10.-pruebas-de-integracion/10.5-mejorando-tu-codigo/agregando-diferentes-parametros-con-mstest","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"12. Pruebas de integración"},{"label":"12.6 Specflow Mejorando tu código"}]},{"id":"Va08v1qJIKCaRPqErg47","title":"12.6.6 Generando el reporte living doc de specflow","pathname":"/net-core/10.-pruebas-de-integracion/10.5-mejorando-tu-codigo/12.6.6-generando-el-reporte-living-doc-de-specflow","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"12. Pruebas de integración"},{"label":"12.6 Specflow Mejorando tu código"}]},{"id":"-MBvXpJvtzJNwbmxoxty","title":"13. Integración continua con Postman","pathname":"/net-core/14.-introduccion-a-postman","siteSpaceId":"sitesp_illA0","description":""},{"id":"-MCAI9rikRw1uriIE1E_","title":"13.1 Recomendaciones para probar tus servicios","pathname":"/net-core/14.-introduccion-a-postman/14.1-recomendaciones-para-probar-tus-servicios","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"13. Integración continua con Postman"}]},{"id":"-MCUsIa3KtHS_MpC4Qw4","title":"13.2 Instrucciones básicas para probar con Postman","pathname":"/net-core/14.-introduccion-a-postman/14.2-instrucciones-basicas-para-probar-con-postman","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"13. Integración continua con Postman"}]},{"id":"-MC9yADKAfA6KPCkX9ft","title":"13.3 Crear colecciones en Postman","pathname":"/net-core/14.-introduccion-a-postman/14.1-probar-tus-servicios-con-postman","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"13. Integración continua con Postman"}]},{"id":"-MM7FOdxo7beWKw0fmZh","title":"13.4 Agregar pruebas a tus servicios","pathname":"/net-core/14.-introduccion-a-postman/14.4-agregar-pruebas-a-tus-servicios","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"13. Integración continua con Postman"}]},{"id":"-MLLXYFaaN-PqSPiJm2Y","title":"13.5 Crear environments","pathname":"/net-core/14.-introduccion-a-postman/14.5-crear-environments","siteSpaceId":"sitesp_illA0","description":"Los environments permiten agregar variables para probar tus servicios con diferentes valores","breadcrumbs":[{"label":"13. Integración continua con Postman"}]},{"id":"-MX04Zrrm1LcgenYHZYp","title":"13.6 Agregando datos de prueba con archivos .csv","pathname":"/net-core/14.-introduccion-a-postman/14.6-agregando-datos-de-prueba-con-archivos-.csv","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"13. Integración continua con Postman"}]},{"id":"-MX-UBOXZqbd7n_xrtU7","title":"13.7 Exportando tus colecciones y ejecutarlas con Newman.","pathname":"/net-core/14.-introduccion-a-postman/14.6-utilizando-newman","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"13. Integración continua con Postman"}]},{"id":"-MX4dergjT91EhJxPejW","title":"13.8 Agregando las colecciones de postman al pipeline","pathname":"/net-core/14.-introduccion-a-postman/13.8-agregando-las-colecciones-de-postman-al-pipeline.","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"13. Integración continua con Postman"}]},{"id":"-Lb1Yvfy1P62FYBxTVz8","title":"14. Pruebas de usuario","pathname":"/net-core/9.-pruebas-de-integracion","siteSpaceId":"sitesp_illA0","description":""},{"id":"-MhaGbWYZBq4SfUgNpCo","title":"14.1 Page Object Model","pathname":"/net-core/9.-pruebas-de-integracion/14.2-page-object-model","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"14. Pruebas de usuario"}]},{"id":"-LsoDfjWGP1e53CjPccJ","title":"14.2 ¿Qué es Selenium?","pathname":"/net-core/9.-pruebas-de-integracion/11.1-que-es-selenium","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"14. Pruebas de usuario"}]},{"id":"-LtDSy_ie6-0QUP8zfoV","title":"14.2.1 Selenium Instrucciones básicas","pathname":"/net-core/9.-pruebas-de-integracion/11.1-que-es-selenium/11.1.1-instrucciones-basicas","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"14. Pruebas de usuario"},{"label":"14.2 ¿Qué es Selenium?"}]},{"id":"-LsoLEIX_XqLxJkTgZTr","title":"14.2.2 Agregando el proyecto de pruebas de usuario","pathname":"/net-core/9.-pruebas-de-integracion/11.1-que-es-selenium/11.2-agregando-el-proyecto-de-pruebas-de-usuario","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"14. Pruebas de usuario"},{"label":"14.2 ¿Qué es Selenium?"}]},{"id":"-LsoUtgLpJO3o2NHjOI-","title":"14.3 ¿Qué es Cypress?","pathname":"/net-core/9.-pruebas-de-integracion/12-que-es-cypress","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"14. Pruebas de usuario"}]},{"id":"-LupFZnGe8P4L-xPDiWl","title":"14.3.1 Cypress Instrucciones básicas","pathname":"/net-core/9.-pruebas-de-integracion/12-que-es-cypress/11.3.1-instrucciones-basicas","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"14. Pruebas de usuario"},{"label":"14.3 ¿Qué es Cypress?"}]},{"id":"-M_3ll5pFcHdbg2yrAmR","title":"14.4 ¿Qué es Playwright?","pathname":"/net-core/9.-pruebas-de-integracion/14.3-que-es-playwright","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"14. Pruebas de usuario"}]},{"id":"LQTkfEsZTj56VO3sJFOQ","title":"14.4.1 Playwright Instrucciones básicas","pathname":"/net-core/9.-pruebas-de-integracion/14.3-que-es-playwright/14.4.1-playwright-instrucciones-basicas","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"14. Pruebas de usuario"},{"label":"14.4 ¿Qué es Playwright?"}]},{"id":"-M6I0UPWfvFFF9EY4ZT_","title":"15. Despliegue Continuo con Azure DevOps y Azure","pathname":"/net-core/12.-entrega-continua-continuous-delivery","siteSpaceId":"sitesp_illA0","description":""},{"id":"-LzT56zRYoeKeatYuFPp","title":"15.1 Crear un App Service en Azure","pathname":"/net-core/12.-entrega-continua-continuous-delivery/12.-publicar-en-azure","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"15. Despliegue Continuo con Azure DevOps y Azure"}]},{"id":"-M2ud4L2U8ejwRnA8C3j","title":"15.2 Generando Artifacts en Azure Pipelines","pathname":"/net-core/12.-entrega-continua-continuous-delivery/12.1-publicando-automaticamente-a-azure","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"15. Despliegue Continuo con Azure DevOps y Azure"}]},{"id":"-M6LReQlkx56BP8Jcers","title":"15.3 Generando el Release en Azure Pipelines al App Service de Azure","pathname":"/net-core/12.-entrega-continua-continuous-delivery/12.3-generando-el-release-en-azure-pipelines","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"15. Despliegue Continuo con Azure DevOps y Azure"}]},{"id":"-MX4dxnyOQnF7qYmM_OB","title":"15.4 Ejecutando las colecciones de Postman después del release","pathname":"/net-core/12.-entrega-continua-continuous-delivery/15.4-ejecutando-las-colecciones-de-postman-despues-del-release","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"15. Despliegue Continuo con Azure DevOps y Azure"}]},{"id":"-M6Mlp-G23_biggaQCh7","title":"15.5 Agregando las pruebas de usuario en Azure Pipelines","pathname":"/net-core/12.-entrega-continua-continuous-delivery/12.4-agregando-las-pruebas-de-usuario-en-azure-pipelines","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"15. Despliegue Continuo con Azure DevOps y Azure"}]},{"id":"-Lb1Z-4bvwDrM7slT6sp","title":"16. Instalación en Windows Server e IIS","pathname":"/net-core/10.-instalacion-en-windows-server-e-iis","siteSpaceId":"sitesp_illA0","description":""},{"id":"-MMI7MKDBxFluMti_EY_","title":"16.1 Instalar IIS en Windows Server","pathname":"/net-core/10.-instalacion-en-windows-server-e-iis/16.1-instalar-el-iis-en-windows-server","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"16. Instalación en Windows Server e IIS"}]},{"id":"-MXASqHpjSb8zZMBbI2s","title":"16.2 Instalación del  ASP.NET Core Module/Hosting Bundle","pathname":"/net-core/10.-instalacion-en-windows-server-e-iis/16.2-instalacion-del-asp.net-core-module-hosting-bundle","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"16. Instalación en Windows Server e IIS"}]},{"id":"-MXAULk7KCSSrGHO-2wG","title":"16.3 Crea el Sitio Web en IIS","pathname":"/net-core/10.-instalacion-en-windows-server-e-iis/16.3-crea-el-sitio-web","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"16. Instalación en Windows Server e IIS"}]},{"id":"-Lb1Z6epgVZMyAF5MkGC","title":"17. Instalación en Linux","pathname":"/net-core/11.-instalacion-en-linux","siteSpaceId":"sitesp_illA0","description":""},{"id":"-Lb1ZCE-1eqv1mvj1DTv","title":"17.1 Creando una máquina virtual linux en Azure","pathname":"/net-core/11.-instalacion-en-linux/creando-una-maquina-virtual-linux-en-azure","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"17. Instalación en Linux"}]},{"id":"-LbWPNsrJlAqrgs5d4BH","title":"17.2 Habilitando el acceso remoto","pathname":"/net-core/11.-instalacion-en-linux/11.2-habilitando-el-acceso-remoto","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"17. Instalación en Linux"}]},{"id":"-Lbag1voABvvTCNkX64m","title":"17.3 Configura linux para .Net Core","pathname":"/net-core/11.-instalacion-en-linux/11.3-configura-linux-para-.net-core","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"17. Instalación en Linux"}]},{"id":"-LbkyVp-v0MwKdWSm9vq","title":"17.4 Instalando mysql","pathname":"/net-core/11.-instalacion-en-linux/11.4-instalando-mysql","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"17. Instalación en Linux"}]},{"id":"-Lbky25gfb2vMq2q7CM0","title":"17.5 Instalando Nginx y configurando tu servicio","pathname":"/net-core/11.-instalacion-en-linux/11.5-instalando-nginx","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"17. Instalación en Linux"}]},{"id":"-LetfNlSHeacSdnS1-5Z","title":"17.6 Instalando un certificado SSL gratuito con CertBot","pathname":"/net-core/11.-instalacion-en-linux/11.6-instalando-un-certificado-ssl-con-certbot","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"17. Instalación en Linux"}]},{"id":"-MZLJvHOCXW5kjVQxKYl","title":"17.7 Agregando diferentes subdominios","pathname":"/net-core/11.-instalacion-en-linux/17.7-agregando-diferentes-subdominios","siteSpaceId":"sitesp_illA0","description":"","breadcrumbs":[{"label":"17. Instalación en Linux"}]},{"id":"-MX4itPMj2vTSKn-a1Li","title":"18. Docker","pathname":"/net-core/18.-docker","siteSpaceId":"sitesp_illA0","description":""}]}