Repositorio Open Source de documentación en nuevas tecnologías
En el siguiente link encontrará el repositorio creado para este ejemplo práctico: https://github.com/tfg2021-escinf-una/eg.geocities.management/tree/development . En caso de tener alguna duda con el código, puede revisar directamente en el repositorio, o bien, clonarlo y modificarlo.
Abrir el repositorio microservices-tutorial/geocities-microservice
en el editor de texto
En este momento la lista de archivos en el proyecto es la siguiente:
microservices-tutorial
│
└─── geocities-microservice
│ │ README.md
│ │ .gitignore
npx create-nx-workspace@latest
git
microservices-tutorial
│
└─── geocities-microservice
│ │ apps
│ │ deployment
│ │ libs
│ │ tools
│ │ README.md
│ │ .gitignore
apps
es la carpeta donde internamente se encuentra todas las applicaciones que este repositorio contiene.deployment
contiene los archivos necesarios para efectuar el despliegue en el cluster de kubernetes.apps
└─── geography
│ │ src
│ │ │ main.ts
│ │ │ app
│ │ │ │ controllers
│ │ │ │ routes
│ │ │ │ utils
const {
APIBaseUrl,
APIHost,
APIKey
} = environment
export const getCountries = async (req : Request, res : Response) => {
const reqQueryParams = {
currencyCode : req.query?.currencyCode,
};
const response = await requestHandler({
type: 'GET',
baseUrl: APIBaseUrl,
endpoint: 'v1/geo/countries',
params : reqQueryParams,
headers: {
'X-RapidAPI-Host': APIHost,
'X-RapidAPI-Key': APIKey
}
});
return res.status(response.statusCode)
.json(response);
};
export const useCountryRoutes = (app : Application) => {
app.use((_req : Request, res : Response, next : NextFunction) => {
res.header(
'Access-Control-Allow-Headers',
'x-access-token, Origin, Content-Type, Accept'
);
next();
});
app.get(`api/v1/countries/`, [
//middleware in needed case.
], getCountries);
}
/api/v1/countries
, la función getCountries
definida en el controlador será ejecutado.useCountryRoutes
, debe ser ejecutada para concluir el proceso.import * as express from 'express';
import { useCountryRoutes } from './app/routes';
import { environment } from './environment';
import { useSwagger } from './swagger';
import bodyParser = require('body-parser');
const { ProductionMode } = environment
const app = express();
app.use(bodyParser.json());
// liveness route
app.get('/', (_req, res) => {
res.send('Web API running')
})
if(!ProductionMode)
useSwagger(app);
useCountryRoutes(app);
// server configuration
const port = process.env.port || 3000;
const server = app.listen(port, () => {
console.log(`ProductionMode: ${ProductionMode}`)
console.log(`Listening at http://localhost:${port}/api`);
});
server.on('error', console.error);
main.ts
, el cual es donde se crea la aplicación mediante el uso de express. npx nx serve
Una vez realizados todos estos pasos, el servidor está listo para recibir peticiones HTTP en el puerto 3000
.