API de vente de vol pour la companie K4 Airline.
- Jordan KAGMENI (Torador): Lead Dev
- Carlos KODJO: QA
- Andy KOUEKAM: Front Dev
- Eddy KOKO: Front Dev
- Flights Engine: Getting flights airline company
- Bookings Engine: booking flights airline company
- API-FRONT: Gestion et sérialisation des requêtes entre les applications front-end et les microservices de K4.
- EXTERNAL API: Gestion et sérialisation des requêtes entre les APIs externes et les microservices de K4.
- Node JS
Après avoir cloné le projet, rassurer vous d'avoir nodejs installé sur votre machine en tappant cette commande:
node --version
#v16.14.2
Si la version de node ne s'affiche pas, je vous invite à la télécharger ici.
- Dépendances
Pour installer les dépendances du projet, tappez cette commande dans votre terminal à la racine de chaque ressource:
yarn
#or
npm install
- Redis (Requis pour l'authentification API)
Rassurez-vous d'avoir lancer redis sur votre machine. Vous pouvez le faire via Docker. Voir ici
- Création de la base de données
-Créer un fichier JSON dans le dossier /data et nommer le comme vous le voulez ou utiliser celui défini par défaut.
- Seed des données: Vous pouvez vous inspirer des données dans le fichier par défaut pour définir les données par défaut dans votre base de données comme les flights, les Airports et les Airlines. Chaque microservice et API possède ses contrats définis dans /app/DTO.
- Variables d'environnements
-
Veuillez créer votre fichier .env à la racine du projet.
-
Copiez le contenu se trouvant dans le fichier .env.example et coller le dans votre fichier .env
-
Modifiez au besoin les identifiants de connexion propre à votre environnement sans supprimer les autres. Vous pouvez aussi modifier les variables d'environnements du serveur d'application (PORT, HOST, etc...).
- Lancer le serveur de BD Json (json-server)
npx json-server data/db.json --watch --port 3005
Pour modifier le port par défaut (3000), vous pouver rajouter le drapeau: --port numero_port.
Pour plus d'information, cf docs.
export interface Airline {
id: string
code: string
name: string
}
export interface AirportDTO {
id: string
code: string
name: string
}
export interface BookingDTO<T extends string | AirportDTO> {
id: string
flight?: FlightDTO<T>
flight_id: string
date_departiture: number
quantity: number
discount?: number
discount_cond?: number
currency_rate?: number
email_guest: string
currency: string
cost_per_more_luggages?: number
luggages: number
passengers?: Passenger[]
}
export interface FlightDTO<T extends string | AirportDTO> {
id: string
airport_departiture: T
airport_destination: T
price: number
seats: number
luggages_limit: number
stopover: string[]
airline: string | Airline
}
export interface Passenger {
firstname: string
lastname: string
birthdate: number
}
Lancer chacune des ressources.
#To run development server
yarn dev
#or
npm run dev
#To run tests
yarn test
#or
npm run test
#To build application for production
yarn build
#or
npm run build
#To run production server
yarn start
#or
npm run start
Seules les ressources API-FRONT et External API ont une documentation swagger accessible via /docs.
Chaque requête à une ressource K4 necessite OBLIGATOIREMENT une clé API.
Ex:
curl --request GET \
--url http://127.0.0.1:8080/api/v1/flights \
--header 'K4-API-KEY: __YOUR_API_KEY__'
Chaque ressource K4 expose des routes pour vérifier leur status et leur santé.
N.B: Pas besoin de fournir la clé API
- Sur /:
curl --request GET \
--url http://127.0.0.1:8080
#==> Résultat
# {
# title: string,
# version: string,
# made_by: string,
# technology: string,
# environment: string,
# ready: boolean,
# healthy: boolean, # status of healthy ressource
# docs: string, # Display just for API FRONT and EXTERNAL API
# repo: string,
# licence: string,
# }
- Sur /healtCheck:
curl --request GET \
--url http://127.0.0.1:8080/healtCheck
#==> Résultat: status = 200 or 400
# {
# healthy: boolean,
# report: {
# env: {
# displayName: string,
# health: {
# healthy: boolean
# }
# },
# appKey: {
# displayName: string,
# health: {
# healthy: boolean
# },
# ...more infos
# }
# }
}
- Lancer le REPL
node ace repl
- Voir la liste des endpoints
node ace list:routes
- Autres
Pour voir toutes les commandes, tapez:
node ace
- Jordan KAGMENI (Torador)
OPEN K4.