El objetivo de este proyecto es desarrollar un aplicativo web (REST API) que permita gestionar la información de pacientes y doctores. El aplicativo deberá cumplir con los siguientes requisitos:
- Recibir la información de pacientes y doctores a través de formularios web.
- Almacenar la información en una base de datos.
- Mostrar la información de pacientes y doctores en una página web.
- Node, Express, Typescript, MySQL and Sequelize as ORM Basic REST API
- CRUD Operations (A Controller for this)
- SQL for database: Relational MySQL - Use ORM Sequelize
1. Clone this repo by running the following command :-
git clone https://github.com/RaulAJaimes/citas-medicas-ts.git
cd citas-medicas-ts
2. Install the required package :-
npm install
3. Now run the npm command to start the project :-
npm run dev
4. 🎉 Open postman and test the rest api on this url https://127.0.0.1:3000
Remember that the .env
file must be created for the API to work.
Remember to create the database. It is not necessary to run script to create tables or other specifications, as this is done by the ORM.
Additionally this project uses:
Debes tener creada unicamente la base de datos. El ORM se encarga del mapeo entre la especificación en código y la base de datos MySQL.
La base de datos para este ejemplo se llama citasuno
.
Debes tener instalado Swagger.
npm install swagger-jsdoc swagger-ui-express
npm install @types/swagger-ui-express @types/swagger-jsdoc --save-dev
Luego debes importarlo en el proyecto en app.ts
:
import swaggerUi from 'swagger-ui-express';
import * as swaggerDocument from "./src/swagger.json";
Si te aparece el problema de Cannot find module './src/swagger.json
es por la importación de un archivo JSON en TypeScript.
En TypeScript, por defecto, no se pueden importar archivos JSON directamente. Para solucionar este problema, debes habilitar la opción --resolveJsonModule
en tu archivo de configuración de TypeScript (tsconfig.json
).
Finalmente agrega la ruta para la documentación con Swagger.
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
Con esto, podrás acceder a la documentación de Swagger en la ruta /api-docs
de tu aplicación.
Por favor, ten en cuenta que este es un ejemplo básico y puedes necesitar ajustarlo según tus necesidades. Por ejemplo, puedes querer agregar autenticación a la ruta de la documentación de Swagger, o puedes tener otros middlewares que necesiten ser configurados. Te recomiendo que consultes la documentación de swagger-ui-express
para obtener más detalles.
En la carpeta database-citasMedicas-main
Guía paso a paso para crear una API REST básica con TypeScript, Node.js, Express.js y Sequelize ORM para MySQL:
-
Inicializa tu proyecto Node.js con el comando
npm init
. Este comando te guiará para crear un archivopackage.json
que contendrá las configuraciones básicas de tu proyecto. -
Instala las dependencias necesarias para tu proyecto con el siguiente comando:
npm i express nodemon body-parser mysql2 dotenv cors swagger-jsdoc swagger-ui-express
Esto instalará Express.js (un marco de aplicación web), nodemon (para reiniciar automáticamente tu servidor), body-parser (para analizar el cuerpo de las solicitudes HTTP), mysql2 (un controlador MySQL para Node.js), dotenv (para manejar variables de entorno), cors (para habilitar CORS), y swagger-jsdoc y swagger-ui-express (para la documentación de la API).
-
Instala Sequelize y Sequelize-Typescript con el comando
npm install sequelize sequelize-typescript
. Sequelize es un ORM para Node.js que soporta la sintaxis de ES6, ES7 y TypeScript. -
Instala ts-node y nodemon como dependencias de desarrollo con el comando
npm install --save-dev ts-node nodemon
. Ts-node te permite ejecutar TypeScript directamente, mientras que nodemon reiniciará tu servidor automáticamente cada vez que hagas un cambio en tu código. -
Instala TypeScript como una dependencia de desarrollo con el comando
npm install typescript --save-dev
. -
Instala los tipos de TypeScript para tus dependencias con el comando:
npm i @types/node @types/express @types/body-parser @types/mysql @types/dotenv @types/cors @types/swagger-ui-express @types/swagger-jsdoc --save-dev
Esto te permitirá utilizar TypeScript con Node.js, Express.js, body-parser, mysql, dotenv, cors, swagger-ui-express y swagger-jsdoc.
-
Inicializa tu configuración de TypeScript con el comando
npx tsc --init
. Esto creará un archivotsconfig.json
en tu proyecto. -
Configura las opciones del compilador de TypeScript en tu archivo
tsconfig.json
:
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"outDir": "./dist",
"strict": true,
"esModuleInterop": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
}
Esto configurará TypeScript para compilar a ES6, utilizar módulos CommonJS, emitir archivos compilados a la carpeta ./dist
, habilitar todas las comprobaciones de tipo estrictas, habilitar la interoperabilidad de módulos ES, y habilitar los decoradores experimentales y la emisión de metadatos de decoradores.
- Configura los scripts de tu proyecto en tu archivo
package.json
:
"scripts": {
"start": "tsc && nodemon dist/app.js",
"dev": "tsc && nodemon app.ts"
}
Esto te permitirá iniciar tu proyecto con npm start
y ejecutar tu proyecto en modo de desarrollo con npm run dev
.
-
Crea un archivo
.env
para almacenar tus variables de entorno. -
Crea un archivo
.gitignore
para especificar los archivos y directorios que Git debe ignorar.
¡Y eso es todo! Ahora tienes una base para empezar a construir tu API REST con TypeScript, Node.js, Express.js y Sequelize ORM para MySQL. ¡Buena suerte con tu proyecto! 🚀