Node.js: impostare correttamente le risposte AJAX con gli header HTTP

In Node.js è fondamentale impostare correttamente le risposte alle richieste AJAX.

Definiamo uno schema del database con un tipo di dati specifico:


'use strict';

const mongoose = require('mongoose');

let TestSchema  = mongoose.Schema;

let TestsSchema   = new TestSchema({
    created: Date

},{collection: 'test'});

module.exports = mongoose.model('Test', TestsSchema);

L'utente sceglie una data e la invia. Quindi avremo:


'use strict';

const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');

mongoose.Promise = require('bluebird');
mongoose.connect('mongodb://user:password@127.0.0.1/mydb');

const port = process.env.PORT || 8080;
const app = express();
const Test = require('Test');


app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));


app.post('/create', function(req, res) {
    let submittedDate = Date.parse(req.body.date);
    if(!isNaN(submittedDate)) {
        let okDate = new Date(submittedDate);
        let newTest = new Test({created: okDate});

        newTest.save(function(error, test) {
            if(!error) {
                res.json(test);
            } else {
                res.status(500).json(error);
            }
        });
    } else {
        res.status(500).json({error: 'Invalid date'});
    }
});

app.listen(port);

Avremo in risposta due codici HTTP, ossia 200 se non ci sono errori e 500 in caso di errori. Gli header sono fondamentali per permettere al client di identificare il tipo di risposta.

Documentazione

Date.parse()

Torna su