code

BijbelQuiz Local API Instructies

De BijbelQuiz app biedt een lokale HTTP API die externe applicaties in staat stelt om quiz-vragen, gebruikersvoortgang en game-statistieken te benaderen. Deze API is ontworpen voor integratie met andere apps, tools of services.

1

De API inschakelen

Om de BijbelQuiz API te gebruiken, moet u deze eerst inschakelen in de app:

  • Open de BijbelQuiz app
  • Ga naar InstellingenLocal API
  • Schakel "API Inschakelen" in
  • Klik op "Sleutel Genereren" om een API-sleutel aan te maken
  • U kunt desgewenst de API Poort wijzigen (standaard: 7777)
2

Uw netwerk toegang verkrijgen

De API-server bindt aan alle netwerkinterfaces (0.0.0.0), waardoor deze toegankelijk is vanaf:

  • Lokale computer: http://localhost:7777
  • Lokaal netwerk: http://[uw-apparaat-ip]:7777
  • Externe tools: Gebruik het IP-adres van uw apparaat
Uw API-sleutel: bq_xxxxxxxxxxxxxxxx
API URL: http://localhost:7777/v1
3

API-sleutel beheer

  • Nieuwe sleutel genereren: Maakt een nieuwe API-sleutel aan en maakt de vorige ongeldig
  • Sleutel formaat: bq_ gevolgd door een 16-karakter alfanumerieke tekenreeks
  • Beveiliging: Houd uw API-sleutel veilig en deel deze niet publiek
4

Authenticatie methoden

Alle API-eindpunten (behalve /health) vereisen authenticatie met uw API-sleutel:

Methode 1: Bearer Token (Aanbevolen)

curl -H "Authorization: Bearer uw-api-sleutel" \
http://localhost:7777/v1/questions

Methode 2: API-sleutel Header

curl -H "X-API-Key: uw-api-sleutel" \
http://localhost:7777/v1/questions
5

Belangrijke API-eindpunten

• Gezondheidscontrole

GET http://localhost:7777/v1/health

Controleer of de API-server actief is.

• Quiz-vragen ophalen

GET http://localhost:7777/v1/questions
GET http://localhost:7777/v1/questions?category=Genesis&limit=10
GET http://localhost:7777/v1/questions?difficulty=3

Haal quiz-vragen op met optionele filters voor categorie, limiet en moeilijkheidsgraad.

• Gebruikersvoortgang

GET http://localhost:7777/v1/progress

Haal de lesvoortgang en ontgrendelstatus van de gebruiker op.

• Game-statistieken

GET http://localhost:7777/v1/stats

Haal huidige game-statistieken en prestatiemetingen op.

• Sterren beheer

GET http://localhost:7777/v1/stars/balance
POST http://localhost:7777/v1/stars/add
POST http://localhost:7777/v1/stars/spend

Beheer sterrentransacties en saldo.

6

Rate beperking

De API implementeert rate limiting om misbruik te voorkomen:

  • Maximum: 100 verzoeken per minuut per IP-adres
  • Beveiliging: Verzoeken worden bijgehouden per IP-adres
  • Automatisch opruimen: Rate limit gegevens worden automatisch elke 5 minuten opgeruimd
  • Gezondheidscontrole: Eindpunt is uitgesloten van rate limiting
7

Praktische voorbeelden

Python voorbeeld:

import requests

API_KEY = "uw-api-sleutel-hier"
BASE_URL = "http://localhost:7777/v1"

def get_questions(category=None, limit=10):
    headers = {"X-API-Key": API_KEY}
    params = {"limit": limit}
    if category:
        params["category"] = category

    response = requests.get(f"{BASE_URL}/questions", headers=headers, params=params)
    response.raise_for_status()
    return response.json()

# Gebruik
questions = get_questions(category="Genesis", limit=5)
print(f"Opgehaald: {questions['count']} vragen")

JavaScript/Node.js voorbeeld:

const API_KEY = "uw-api-sleutel-hier";
const BASE_URL = "http://localhost:7777/v1";

async function getQuestions(category = null, limit = 10) {
    const headers = { "X-API-Key": API_KEY };
    const params = new URLSearchParams({ limit: limit.toString() });
    if (category) { params.append("category", category); }

    const response = await fetch(`${BASE_URL}/questions?${params}`, { headers });
    if (!response.ok) { throw new Error(`API error: ${response.status}`); }
    return await response.json();
}
8

Veelvoorkomende problemen

• Verbinding geweigerd

  • Controleer of de API ingeschakeld is in BijbelQuiz instellingen
  • Controleer of de poort (standaard: 7777) niet geblokkeerd is door firewall
  • Controleer of de app actief is en niet op de achtergrond

• Authenticatie mislukt

  • Gebruik de juiste API-sleutel
  • Controleer of de API-sleutel niet opnieuw is gegenereerd
  • Probeer beide authenticatie methoden

• Rate limit overschreden

  • Verminder uw verzoeksnelheid (max 100/minuut per IP)
  • Implementeer retry logica met exponentiële backoff
  • Overweeg het cachen van antwoorden
9

Beveiligingsoverwegingen

  • API-sleutel bescherming: Houd uw API-sleutel veilig en commit deze niet naar versiebeheer
  • Netwerk toegang: De API is toegankelijk vanaf uw lokale netwerk - wees hiervan bewust bij openbare WiFi
  • Firewall configuratie: Overweeg firewallregels als u toegang moet beperken tot specifieke IP-bereiken
  • Sleutelrotatie: Genereer regelmatig uw API-sleutel voor verbeterde beveiliging

Tip: API-documentatie

De volledige technische API-documentatie is beschikbaar in het API.md bestand met gedetailleerde eindpunt-specificaties, voorbeeldreacties en geavanceerde functies.

Ondersteuning

Voor API-gerelateerde vragen, controleer eerst de troubleshooting sectie hierboven. Voor meer technische ondersteuning, bekijk de volledige documentatie of neem contact op met het development team.

Terug naar instructies