{"id":28478436,"url":"https://github.com/breynersmartinez/api_estudiantes","last_synced_at":"2025-08-04T02:13:43.432Z","repository":{"id":252860146,"uuid":"841693700","full_name":"Breynersmartinez/API_estudiantes","owner":"Breynersmartinez","description":"Este repositorio contiene una API RESTful desarrollada en Spring Boot para gestionar estudiantes. La API permite realizar operaciones CRUD (Crear, Leer, Actualizar y Eliminar) sobre una entidad Student","archived":false,"fork":false,"pushed_at":"2025-06-11T17:22:01.000Z","size":46331,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-02T18:42:56.541Z","etag":null,"topics":["docker","dockerfile","hibernate","java","jpa","postgresql","spring-boot","swagger"],"latest_commit_sha":null,"homepage":"https://api-estudiantes-wckx.onrender.com/api/v1/students","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Breynersmartinez.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-12T22:23:12.000Z","updated_at":"2025-06-11T17:29:34.000Z","dependencies_parsed_at":"2025-03-25T21:22:43.090Z","dependency_job_id":"24153080-bf8b-44a0-b81a-3bd3fad07780","html_url":"https://github.com/Breynersmartinez/API_estudiantes","commit_stats":null,"previous_names":["breynersmartinez/crud_estudiantes","breynersmartinez/api_estudiantes"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Breynersmartinez/API_estudiantes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breynersmartinez%2FAPI_estudiantes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breynersmartinez%2FAPI_estudiantes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breynersmartinez%2FAPI_estudiantes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breynersmartinez%2FAPI_estudiantes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Breynersmartinez","download_url":"https://codeload.github.com/Breynersmartinez/API_estudiantes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Breynersmartinez%2FAPI_estudiantes/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268639824,"owners_count":24282673,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-04T02:00:09.867Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","dockerfile","hibernate","java","jpa","postgresql","spring-boot","swagger"],"created_at":"2025-06-07T17:35:11.583Z","updated_at":"2025-08-04T02:13:43.422Z","avatar_url":"https://github.com/Breynersmartinez.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n# **API de Gestión de Estudiantes**\n\nEsta es una API básica desarrollada en **Spring Boot** que permite realizar operaciones CRUD (Create, Read, Update, Delete) para gestionar estudiantes. La API está diseñada para ser simple, fácil de usar y extensible.\n\n---\n\n## **Tabla de Contenidos**\n1. [Características](#características)\n2. [Tecnologías Utilizadas](#tecnologías-utilizadas)\n3. [Requisitos](#requisitos)\n4. [Instalación y Configuración](#instalación-y-configuración)\n5. [Endpoints](#endpoints)\n6. [Ejemplos de Uso](#ejemplos-de-uso)\n7. [Manejo de Excepciones](#manejo-de-excepciones)\n8. [Contribución](#contribución)\n9. [Licencia](#licencia)\n\n---\n\n## **Características**\n- **CRUD Completo**: Permite crear, leer, actualizar y eliminar estudiantes.\n- **Validación de Datos**: Valida que los datos ingresados sean correctos (por ejemplo, correo electrónico único).\n- **Manejo de Excepciones**: Captura excepciones y devuelve respuestas claras y útiles.\n- **Base de Datos MySQL**: Almacena los datos en una base de datos MySQL.\n- **Documentación con Swagger**: Incluye documentación automática de la API.\n\n---\n\n## **Tecnologías Utilizadas**\n- **Spring Boot**: Framework para desarrollar aplicaciones Java.\n- **Spring Data JPA**: Para la persistencia de datos.\n- **MySQL**: Base de datos relacional.\n- **Swagger**: Para documentar la API.\n- **Lombok**: Para reducir el código repetitivo (getters, setters, constructores).\n\n---\n\n## **Requisitos**\n- **Java 17 o superior**.\n- **MySQL** instalado y configurado.\n- **Maven** para la gestión de dependencias.\n\n---\n\n## **Instalación y Configuración**\n\n### **1. Clonar el Repositorio**\n```bash\ngit clone https://github.com/tu-usuario/crud-rapido.git\ncd crud-rapido\n```\n\n### **2. Configurar la Base de Datos**\n1. Crea una base de datos en MySQL llamada `estudiantes`.\n2. Configura las credenciales de la base de datos en el archivo `application.properties`:\n   ```properties\n   spring.datasource.url=jdbc:mysql://localhost:3306/estudiantes\n   spring.datasource.username=root\n   spring.datasource.password=tu-contraseña\n   spring.jpa.hibernate.ddl-auto=update\n   ```\n\n### **3. Compilar y Ejecutar la Aplicación**\n```bash\nmvn clean install\nmvn spring-boot:run\n```\n\nLa aplicación estará disponible en: `http://localhost:8081`.\n\n---\n\n## **Endpoints**\n\n### **1. Obtener Todos los Estudiantes**\n- **Método**: `GET`\n- **URL**: `/api/v1/students`\n- **Respuesta**:\n  ```json\n  [\n    {\n      \"studentId\": 1,\n      \"firstName\": \"Juan\",\n      \"lastName\": \"Pérez\",\n      \"email\": \"juan.perez@example.com\"\n    }\n  ]\n  ```\n\n### **2. Obtener un Estudiante por ID**\n- **Método**: `GET`\n- **URL**: `/api/v1/students/{studentId}`\n- **Respuesta**:\n  ```json\n  {\n    \"studentId\": 1,\n    \"firstName\": \"Juan\",\n    \"lastName\": \"Pérez\",\n    \"email\": \"juan.perez@example.com\"\n  }\n  ```\n\n### **3. Crear un Nuevo Estudiante**\n- **Método**: `POST`\n- **URL**: `/api/v1/students`\n- **Cuerpo de la Solicitud**:\n  ```json\n  {\n    \"firstName\": \"Ana\",\n    \"lastName\": \"Gómez\",\n    \"email\": \"ana.gomez@example.com\"\n  }\n  ```\n- **Respuesta**:\n  ```json\n  \"Estudiante guardado correctamente.\"\n  ```\n\n### **4. Eliminar un Estudiante**\n- **Método**: `DELETE`\n- **URL**: `/api/v1/students/{studentId}`\n- **Respuesta**:\n  ```json\n  \"Estudiante eliminado correctamente.\"\n  ```\n\n---\n\n## **Ejemplos de Uso**\n\n### **1. Crear un Estudiante**\n```bash\ncurl -X POST http://localhost:8081/api/v1/students \\\n-H \"Content-Type: application/json\" \\\n-d '{\n  \"firstName\": \"Ana\",\n  \"lastName\": \"Gómez\",\n  \"email\": \"ana.gomez@example.com\"\n}'\n```\n\n### **2. Obtener Todos los Estudiantes**\n```bash\ncurl -X GET http://localhost:8081/api/v1/students\n```\n\n### **3. Eliminar un Estudiante**\n```bash\ncurl -X DELETE http://localhost:8081/api/v1/students/1\n```\n\n---\n\n## **Manejo de Excepciones**\nLa API maneja excepciones comunes y devuelve respuestas claras. Algunos ejemplos:\n\n- **Correo Electrónico Duplicado**:\n  ```json\n  {\n    \"timestamp\": \"2025-03-18T17:33:23.449+00:00\",\n    \"status\": 409,\n    \"error\": \"Conflict\",\n    \"message\": \"Error: El correo electrónico ya está en uso.\",\n    \"path\": \"/api/v1/students\"\n  }\n  ```\n\n- **Estudiante No Encontrado**:\n  ```json\n  {\n    \"timestamp\": \"2025-03-18T17:33:23.449+00:00\",\n    \"status\": 404,\n    \"error\": \"Not Found\",\n    \"message\": \"Estudiante no encontrado.\",\n    \"path\": \"/api/v1/students/123\"\n  }\n  ```\n\n---\n\n## **Contribución**\nSi deseas contribuir a este proyecto, sigue estos pasos:\n1. Haz un fork del repositorio.\n2. Crea una rama para tu contribución (`git checkout -b feature/nueva-funcionalidad`).\n3. Realiza tus cambios y haz commit (`git commit -m 'Añadir nueva funcionalidad'`).\n4. Haz push a la rama (`git push origin feature/nueva-funcionalidad`).\n5. Abre un Pull Request.\n\n---\n\n## **Licencia**\nEste proyecto está bajo la licencia **MIT**. Para más detalles, consulta el archivo [LICENSE](LICENSE).\n\n---\n\n¡Gracias por usar esta API! Si tienes alguna pregunta o sugerencia, no dudes en abrir un issue o contactarme. 😊\n\n---\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbreynersmartinez%2Fapi_estudiantes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbreynersmartinez%2Fapi_estudiantes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbreynersmartinez%2Fapi_estudiantes/lists"}