Ontwikkel een dynamische PHP API-endpoint
description
Met deze prompt kan ik snel een functioneel en op maat gemaakt PHP API-endpoint ontwikkelen dat flexibel omgaat met verschillende inputparameters en verwerkingslogica. Dit bespaart tijd, voorkomt standaardcode en helpt me moderne webservices te bouwen zonder zelf vanaf nul te hoeven beginnen.
prompt
Help me een PHP API-endpoint te maken dat dynamisch gegevens verwerkt op basis van de volgende parameters:
API Endpoint Naam: <voer de naam van het API-endpoint in>
HTTP Methode (GET, POST, PUT, DELETE): <selecteer de HTTP methode>
Verwachte Input Parameters ( ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een voorbeeld van een PHP API-endpoint dat voldoet aan jouw specificaties:
```php
<?php
// gebruikersgegevens.php
// Set headers voor JSON response
header('Content-Type: application/json');
// Database connectie instellingen
$host = 'localhost';
$dbname = 'jouw_database_naam';
$username = 'jouw_db_gebruiker';
$password = 'jouw_db_wachtwoord';
try {
// Maak PDO verbinding
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password);
// Zet error mode op exception
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
// Fout bij connectie
http_response_code(500);
echo json_encode(['error' => 'Database verbinding mislukt: ' . $e->getMessage()]);
exit;
}
// Controleer dat we een GET verzoek gebruiken
if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
http_response_code(405);
echo json_encode(['error' => 'Method not allowed']);
exit;
}
// Haal JSON input op
$input = json_decode(file_get_contents('php://input'), true);
// Controleer of user_id aanwezig is
if (!isset($input['user_id']) || !is_int($input['user_id'])) {
http_response_code(400);
echo json_encode(['error' => 'Ongeldige input: user_id is vereist en moet een integer zijn.']);
exit;
}
$user_id = $input['user_id'];
try {
// Prepareer SQL statement
$stmt = $pdo->prepare('SELECT * FROM gebruikers WHERE user_id = :user_id');
$stmt->bindParam(':user_id', $user_id, PDO::PARAM_INT);
$stmt->execute();
// Haal gebruiker op
$gebruiker = $stmt->fetch(PDO::FETCH_ASSOC);
if ($gebruiker) {
// Gebruiker gevonden, stuur JSON terug
echo json_encode(['status' => 'success', 'gegevens' => $gebruiker]);
} else {
// Geen gebruiker gevonden
http_response_code(404);
echo json_encode(['status' => 'fout', 'message' => 'Gebruiker niet gevonden.']);
}
} catch (PDOException $e) {
http_response_code(500);
echo json_encode(['error' => 'Database fout: ' . $e->getMessage()]);
}
?>
```
**Uitleg:**
- Het script luistert naar een GET-verzoek.
- Het verwacht JSON-input met het `user_id`.
- Het maakt verbinding met een MySQL database.
- Het haalt de gegevens op uit de tabel `gebruikers` op basis van `user_id`.
- De response is in JSON-formaat.
- Voor gebruik, vervang je de databasegegevens met jouw eigen gegevens.
**Let op:** Omdat GET requests meestal parameters in de URL hebben, wordt hier `file_get_contents('php://input')` gebruikt om JSON te lezen, wat niet standaard is voor GET-verzoeken. Een alternatief is om `user_id` via URL-parameters te sturen, bijvoorbeeld `?user_id=123`. Wil je dat ik dat voorbeeld ook voor je maak?
provider: deepseek
model: deepseek-chat
Hier is een PHP-implementatie voor je API-endpoint:
```php
<?php
header("Content-Type: application/json; charset=UTF-8");
// Database configuratie
$servername = "localhost";
$username = "jouw_gebruikersnaam";
$password = "jouw_wachtwoord";
$dbname = "jouw_database";
// Input parameters verwerken
$input = json_decode(file_get_contents('php://input'), true);
$user_id = isset($input['user_id']) ? (int)$input['user_id'] : null;
// Valideer input
if ($user_id === null || $user_id <= 0) {
http_response_code(400);
echo json_encode(["error" => "Ongeldige user_id parameter"]);
exit;
}
try {
// Database verbinding
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// SQL query voorbereiden
$stmt = $conn->prepare("SELECT * FROM gebruikers WHERE user_id = :user_id");
$stmt->bindParam(':user_id', $user_id, PDO::PARAM_INT);
$stmt->execute();
// Resultaat ophalen
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if ($user) {
// Succesvolle response
echo json_encode([
"success" => true,
"data" => $user
]);
} else {
// Gebruiker niet gevonden
http_response_code(404);
echo json_encode([
"success" => false,
"error" => "Gebruiker niet gevonden"
]);
}
} catch(PDOException $e) {
// Database error
http_response_code(500);
echo json_encode([
"success" => false,
"error" => "Database fout: " . $e->getMessage()
]);
}
$conn = null;
?>
```
**Belangrijke aanpassingen die je moet maken:**
1. **Database credentials**: Vervang `jouw_gebruikersnaam`, `jouw_wachtwoord` en `jouw_database` met je eigen MySQL credentials
2. **Gebruikers tabel structuur**: Zorg dat je tabel `gebruikers` bestaat met een `user_id` kolom
**Gebruiksvoorbeeld:**
```bash
curl -X GET http://jouwdomein.com/gebruikersgegevens.php \
-H "Content-Type: application/json" \
-d '{"user_id": 123}'
```
**Beveiligingsopmerkingen:**
- Gebruik prepared statements (zoals hier gedaan) om SQL injection te voorkomen
- Overweeg authenticatie toe te voegen als de data gevoelig is
- Valideer altijd input data
- Gebruik HTTPS in productie
Je kunt dit endpoint verder uitbreiden met extra functionaliteit zoals paginering, filtering of extra validatie naar behoefte.