Integration Guide

Learn how to integrate Moon API with popular frameworks and platforms. This guide provides step-by-step instructions for common integration scenarios.

React Integration

1. Install Dependencies

bash
npm install axios

2. Create API Client

Create a new file src/services/moonApi.js:

javascript
import axios from 'axios';

const moonApi = axios.create({
  baseURL: 'https://moon-phase.p.rapidapi.com',
  headers: {
    'X-RapidAPI-Key': process.env.REACT_APP_RAPIDAPI_KEY,
    'X-RapidAPI-Host': 'moon-phase.p.rapidapi.com'
  }
});

export const getMoonPhase = async () => {
  const response = await moonApi.get('/basic');
  return response.data;
};

export const getDetailedData = async ({ lat, lon }) => {
  const response = await moonApi.get('/advanced', {
    params: { lat, lon }
  });
  return response.data;
};
ℹ️

Make sure to create a .env file in your project root and add your RapidAPI key as REACT_APP_RAPIDAPI_KEY.

3. Create Custom Hook

Create a custom hook src/hooks/useMoonData.js:

javascript
import { useState, useEffect } from 'react';
import { getMoonPhase } from '../services/moonApi';

export const useMoonData = () => {
  const [moonData, setMoonData] = useState(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);

  useEffect(() => {
    const fetchData = async () => {
      try {
        const data = await getMoonPhase();
        setMoonData(data);
        setLoading(false);
      } catch (err) {
        setError(err.message);
        setLoading(false);
      }
    };

    fetchData();
  }, []);

  return { moonData, loading, error };
};

4. Use in Components

Example usage in a React component:

jsx
import React from 'react';
import { useMoonData } from '../hooks/useMoonData';

const MoonPhase = () => {
  const { moonData, loading, error } = useMoonData();

  if (loading) return 
Loading...
; if (error) return
Error: {error}
; return (

Current Moon Phase

Phase: {moonData.phase_name}

Stage: {moonData.stage}

Days until full moon: {moonData.days_until_next_full_moon}

); };