esta API REST de libros se desarrollo con el proposito de para practicar con los conociminetos abquiridos en lo largo del tiempo, empezaremos mencionando las tecnologias y dependencias instaladas para su funcionalidad.
clone el proyecto
git clone https://link-to-projectingrese al directorio del proyecto
cd my-projectinstale las dependencias
npm installinicie el servidor
npm run start└── 📁RestApiExpress
└── .editorconfig
└── .env
└── .gitignore
└── 📁build
└── 📁app
└── app.js
└── config.js
└── 📁controller
└── controller.bd.js
└── 📁database
└── bd.js
└── main.js
└── 📁routes
└── books.routes.js
└── 📁services
└── services.js
└── 📁client
└── metodos.http
└── json.png
└── package-lock.json
└── package.json
└── README.MD
└── 📁src
└── 📁app
└── app.ts
└── config.ts
└── 📁controller
└── controller.bd.ts
└── 📁database
└── bd.ts
└── main.ts
└── 📁routes
└── books.routes.ts
└── 📁services
└── services.ts
└── types.d.ts
└── tsconfig.json
se debe de contar con un entorno de javaScript para poder iteractuar con js desde local, en mi caso utilizo node.js, pero se puede utilizar bun o el de su preferencia.
ejecutar el comando y seguir las instrucciones para la inicializacion del proyecto
npm run initpara inicializar todo sin hacer nada utilizar
npm run init -yse debe de installar express para el manejo de las rutas y periciones http
npm install expresstambien se deben de instalar los tipos de express para que TS lo reconozca, esta dependencia seran de desarrollo
npm install @types/express -Dse debe de installar mysql para iteractuar con la BD en este caso utilice promise-mysql para trabajar de manera asincrona las query's
npm install promise-mysqltambien se deben de instalar los tipos de express para que TS lo reconozca, esta dependencia seran de desarrollo
npm install @types/express -Dse utiliza morgan para ver que tipos de solicitudes recibe el servidor y mas informacion que podria ser de interes, tambien se debe de instalar las dependencias para que TS lo reconozca, estas dos dependencias son de desarrollo.
npm install morgan @types/morgan -Dse utiliza esta dependencia para poder acceder a las variables de entorno, este nos ayuda a porteger los datos sensibles de nuestra api rest. igualmente se instala como desarrollo
npm install dotenv -Dse utilizo TypeScript para desarrollar la api y asi prevenir errores posibles que podrian succeder en produccion. esta es de desarrollo ya que compilaremos el codigo a javaScript
npm install TypeScript -Dposteriormente se inicializa TypeScript para asi poder tener el archivo de configuracion y añadir o quitar clausulas mucho mas comodo, en el
package.jsonse crea el comandotsc:tscy se ejecuta el comando.
npm run tsc -- --initse configura el archivo dependiendo el proyecto y sus necesidades, pero validar la ruta de salida
"outDir": "./build"ya que esta es donde se compilan los archivos de TS.
esta dependencia nos ayuda a compilar el codigo TS a JS cada vez que haya un cambio en un archivo, este es una alterniativa a nodemon pero mejorado
npm install ts-node-dev -Dse debe de modificar el package.json con el comando
"nombre-x" : "ts-node-dev ruta_archivo/s.ts"
esta dependencia de eslint nos ayuda a tener una consistencia al momento de escribir el codigo, asi todos programamos en un mismo idioma y no hay inconsistencia en el codigo
npm install ts-standard -Dse debe de modificar el package.json con el comando
"lint" : "ts-standard", este al momento de ejecutarlo detecta los errores del codigo, con el flat --fix"lint" : "ts-standard --fix", corrige los errores automaticamente
posteriormente tambien se añade esta modificacion al package.json para que renocozca ts-standard
"eslintConfig": {
"parserOptions": {
"project": "./tsconfig.json"
},
"extends": [
"./node_modules/ts-standard/eslintrc.json"
]
}
GET /api/books/| Parameter | Type | Description |
|---|---|---|
null |
null |
null |
GET /api/books/:colum/:value| Parameter | Type | Description |
|---|---|---|
colum |
string |
Nombre de parametro |
value |
string |
Valor del parametro buscado |
POST /api/books/| Parameter | Type | Description |
|---|---|---|
null |
null |
null |
Content-Type: application/json,
{
"img": "../public/assets/img/1984.webp",
"producto": "deporte estremo",
"descripcion": "Lo sabes que es de lo mas real de la vida",
"categoria": "ficcion",
"precio": 47890
}
PUT api/books/:id| Parameter | Type | Description |
|---|---|---|
id |
string |
Identificador del libro |
Content-Type: application/json,
{
"img": "../public/assets/img/1984.webp",
"producto": "50 sombreas de harry potter",
"descripcion": "El que sabe de back-end y mas...",
"categoria": "ficcion",
"precio": 45000
}
PATCH api/books/:id| Parameter | Type | Description |
|---|---|---|
id |
string |
Identificador del libro |
Content-Type: application/json
{
"producto": "50 sombreas de harry potter",
"descripcion": "El que sabe de back-end"
}
DELETE api/books/:id| Parameter | Type | Description |
|---|---|---|
id |
string |
Identificador del libro |
