Menu
CoddyTech

Réponses JSON

Fait partie de la section Les bases d’Express du Journey Node.js de Coddy. Leçon 6 sur 20.

Un programme qui appelle votre serveur a besoin de données qu’il peut lire, pas d’une phrase.

app.get('/api/weather', (req, res) => {
    res.json({ city: 'Oslo', temp: 4, rain: true });
});

JSON est un format texte pour les objets et les tableaux. res.json(value) convertit la valeur en JSON et définit l’en-tête Content-Type sur application/json ; un en-tête est une ligne nommée envoyée avec la réponse, et celui-ci indique le type de corps qui suit. Le client reçoit {"city":"Oslo","temp":4,"rain":true} et lit temp comme un nombre.

res.send avec une chaîne envoie text/html, que le programme devrait analyser. Les routes destinées aux programmes commencent généralement par /api, afin que les pages et les données ne partagent jamais le même chemin.

challenge icon

Défi

Facile
  • GET /api/recipes renvoie le tableau recipes au format JSON.
  • GET /api/recipes/:id renvoie une recette au format JSON ; un identifiant inconnu renvoie 404.

Envoyez GET /api/recipes, GET /api/recipes/2 et GET /api/recipes/99. Comparez les en-têtes avec GET /recipes.

Essayez vous-même

import express from 'express';
import { recipes } from './data.js';

const app = express();

app.get('/', (req, res) => {
    res.send('Welcome to Recipe Box');
});

// type('text') envoie du texte brut, donc chaque titre s’affiche sur sa propre ligne.
app.get('/recipes', (req, res) => {
    const { tag } = req.query;
    const list = tag ? recipes.filter((recipe) => recipe.tags.includes(tag)) : recipes;
    res.type('text').send(list.map((recipe) => recipe.title).join('\n'));
});

app.get('/recipes/:id', (req, res) => {
    const recipe = recipes.find((r) => r.id === Number(req.params.id));
    if (!recipe) {
        res.status(404).send('No such recipe');
        return;
    }
    res.send(recipe.title);
});

app.get('/about', (req, res) => {
    res.send('Recipe Box collects family recipes.');
});

app.listen(3000, () => {
    console.log('Recipe Box is running on port 3000');
});
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Les bases d’Express