← Terug naar Blog

JSON-API's en REST-services: Complete ontwikkelingsgids

Leer hoe u op JSON gebaseerde REST-API's kunt bouwen en gebruiken. Behandelt HTTP-methoden, authenticatie, best practices en implementatievoorbeelden uit de praktijk.

Big JSON Team15 min leestijdgeavanceerd
B

Big JSON Team

Technical Writer

Expert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.

15 min read

Basisprincipes van REST-API's

REST (Representational State Transfer) API's gebruiken JSON als het primaire gegevensformaat voor de 'body' van verzoeken (requests) en antwoorden (responses).

HTTP-methoden

  • GET: Gegevens ophalen
  • POST: Een nieuwe bron (resource) aanmaken
  • PUT: Een volledige bron bijwerken
  • PATCH: Een bron gedeeltelijk bijwerken
  • DELETE: Een bron verwijderen

API's bouwen met Express.js

import express from 'express';

const app = express();

app.use(express.json());

let gebruikers = [

{ id: 1, name: 'Alice' },

{ id: 2, name: 'Bob' }

];

// GET alle gebruikers

app.get('/api/users', (req, res) => {

res.json(gebruikers);

});

// GET één gebruiker op ID

app.get('/api/users/:id', (req, res) => {

const gebruiker = gebruikers.find(u => u.id === parseInt(req.params.id));

if (!gebruiker) return res.status(404).json({ error: 'Niet gevonden' });

res.json(gebruiker);

});

// POST een gebruiker aanmaken

app.post('/api/users', (req, res) => {

const gebruiker = { id: gebruikers.length + 1, ...req.body };

gebruikers.push(gebruiker);

res.status(201).json(gebruiker);

});

app.listen(3000);

API's bouwen met Python FastAPI

from fastapi import FastAPI, HTTPException

from pydantic import BaseModel

app = FastAPI()

class Gebruiker(BaseModel):

name: str

email: str

gebruikers_db = []

@app.get("/api/users")

def get_users():

return gebruikers_db

@app.post("/api/users", status_code=201)

def create_user(gebruiker: Gebruiker):

gebruikers_db.append(gebruiker.dict())

return gebruiker

API's gebruiken (Consuming APIs)

JavaScript Fetch

// GET-verzoek

const response = await fetch('https://api.example.com/users');

const gebruikers = await response.json();

// POST-verzoek

const nieuweGebruiker = await fetch('https://api.example.com/users', {

method: 'POST',

headers: { 'Content-Type': 'application/json' },

body: JSON.stringify({ name: 'Alice', email: 'alice@example.com' })

});

Python Requests

import requests

# GET

response = requests.get('https://api.example.com/users')

gebruikers = response.json()

# POST

nieuwe_gebruiker = requests.post(

'https://api.example.com/users',

json={'name': 'Alice', 'email': 'alice@example.com'}

)

API-antwoordpatronen

Succesvol antwoord

{

"success": true,

"data": {

"id": 1,

"name": "Alice"

}

}

Foutantwoord

{

"success": false,

"error": {

"code": "VALIDATION_ERROR",

"message": "Ongeldige invoer",

"details": [

{

"field": "email",

"message": "Ongeldig e-mailformaat"

}

]

}

}

Authenticatie

Bearer Token

fetch('/api/protected', {

headers: {

'Authorization': 'Bearer jouw-token-hier'

}

});

Paginering

{

"data": [...],

"pagination": {

"page": 1,

"perPage": 20,

"total": 156,

"totalPages": 8

}

}

Best Practices

  • Gebruik de juiste HTTP-statuscodes.
  • Voeg versies toe aan je API (bijv. /api/v1/users).
  • Implementeer 'rate limiting' (beperk het aantal verzoeken).
  • Valideer alle invoergegevens.
  • Gebruik HTTPS in een productieomgeving.
  • Documenteer je API (bijv. via OpenAPI/Swagger).
  • Belangrijke Statuscodes

    • 200: OK (Succesvol)
    • 201: Created (Aangemaakt)
    • 400: Bad Request (Foutief verzoek)
    • 401: Unauthorized (Niet geautoriseerd)
    • 404: Not Found (Niet gevonden)
    • 500: Internal Server Error (Serverfout)

    Conclusie

    REST-API's met JSON vormen de ruggengraat van moderne webapplicaties. Beheers HTTP-methoden, statuscodes en authenticatie om robuuste API's te bouwen!

    Share:

    Gerelateerde Artikelen

    Read in English