Install Required Packages
- Begin by installing the necessary library by using npm. Amadeus provides an official SDK for JavaScript, which simplifies integration with their API services.
npm install amadeus
Authorize with Amadeus API
- Authentication is essential for accessing Amadeus APIs. Utilize the client credentials method to obtain a token. Replace `` and `` with your actual credentials.
const Amadeus = require('amadeus');
const amadeus = new Amadeus({
clientId: '<API_KEY>',
clientSecret: '<API_SECRET>'
});
Search for Flights
- After setting up authentication, use the appropriate endpoint to search for flight offers. Adjust the parameters to fit your requirements, such as origin, destination, and departure dates.
amadeus.shopping.flightOffersSearch.get({
originLocationCode: 'JFK',
destinationLocationCode: 'LAX',
departureDate: '2023-11-15',
adults: 1
}).then(function(response){
console.log(response.data);
}).catch(function(error){
console.error(error);
});
Handle API Responses
- Efficiently handle the responses provided by the API. Successful calls return data in JSON format, which can be parsed and processed based on application requirements.
- Implement error handling mechanisms to gracefully manage common issues such as network errors, invalid requests, or quota limits.
amadeus.shopping.flightOffersSearch.get({
originLocationCode: 'JFK',
destinationLocationCode: 'LAX',
departureDate: '2023-11-15',
adults: 1
}).then(function(response) {
const offers = response.data;
offers.forEach(offer => {
console.log(`Price: ${offer.price.total} ${offer.price.currency}`);
});
}).catch(function(error) {
console.error('Failed to fetch flight offers:', error);
});
Parse and Use Flight Data
- Once you have the flight data, parse it to extract useful information such as flight number, airline, and price.
- Use JavaScript's array and object manipulation methods to filter and display the results in your application or user interface.
function displayFlightOffers(offers){
offers.forEach(offer=>{
const flight = offer.itineraries[0].segments[0];
console.log(`Flight from ${flight.departure.iataCode} to ${flight.arrival.iataCode}`);
console.log(`Airline: ${flight.operating.carrierCode}`);
console.log(`Price: ${offer.price.total} ${offer.price.currency}`);
});
}
amadeus.shopping.flightOffersSearch.get({
originLocationCode: 'JFK',
destinationLocationCode: 'LAX',
departureDate: '2023-11-15',
adults: 1
}).then(function(response) {
displayFlightOffers(response.data);
}).catch(function(error) {
console.error('Error fetching flight offers:', error);
});
Implement Rate Limiting and Caching
- Amadeus API has rate limits; ensure you implement mechanisms to respect these limits to avoid being blocked.
- Consider implementing a caching layer using technologies like Redis or localStorage to store frequently accessed data, reducing the need for repetitive requests.
// Example using localStorage for simple caching
const cacheKey = 'flightOffersCache';
const cachedOffers = localStorage.getItem(cacheKey);
if (cachedOffers) {
displayFlightOffers(JSON.parse(cachedOffers));
} else {
amadeus.shopping.flightOffersSearch.get({
originLocationCode: 'JFK',
destinationLocationCode: 'LAX',
departureDate: '2023-11-15',
adults: 1
}).then(function(response) {
localStorage.setItem(cacheKey, JSON.stringify(response.data));
displayFlightOffers(response.data);
}).catch(function(error) {
console.error('Error fetching flight offers:', error);
});
}
Secure the Application
- Store your API keys securely and avoid exposing them in your code, especially if running in a browser environment.
- Consider using a backend proxy to handle requests to Amadeus, which keeps credentials secure server-side.
// Example of using environment variables with Node.js
const amadeus = new Amadeus({
clientId: process.env.AMADEUS_API_KEY,
clientSecret: process.env.AMADEUS_API_SECRET
});