55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
import express from 'express';
|
|
import color from 'chalk';
|
|
import cors from 'cors';
|
|
|
|
// Model
|
|
import ProductModel from './model/ProductModel.js'; // Dateiendung nicht vergessen
|
|
|
|
const PORT = 8000;
|
|
const HOST = '127.0.0.1'; // 'localhost'
|
|
const BASE_URL = `http://${HOST}:${PORT}`;
|
|
|
|
const app = express();
|
|
const products = ProductModel();
|
|
|
|
const corsOptions = {
|
|
origin: 'http://localhost:3000',
|
|
optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204
|
|
};
|
|
|
|
// lade Produkte
|
|
products.load();
|
|
|
|
// Middleware
|
|
app.use(cors(corsOptions)); // Fängt alle HTTP-Requests vor den Routenabfragen ab.
|
|
|
|
// Routes
|
|
app.get('/', (req, res) => {
|
|
// console.log(req.headers);
|
|
|
|
res.send('SERVER WORKS!'); // HTTP-Response wird gesendet.
|
|
});
|
|
|
|
app.get('/persons', (req, res) => {
|
|
// res.setHeader('Content-Type', 'application/json'); // nicht notwendig den Content-Type selber zu definieren, da das express automatisch zuweist.
|
|
|
|
const persons = [
|
|
{ firstName: 'John', lastName: 'Wick' },
|
|
{ firstName: 'Jane', lastName: 'Doe' },
|
|
{ firstName: 'Max', lastName: 'Mustermann' },
|
|
];
|
|
// res.send(JSON.stringify(persons)); // nicht notwendig JS Objekte in JSON Strings umzuwandeln, das das express automatisch umwandelt
|
|
|
|
res.send(persons);
|
|
});
|
|
|
|
app.get('/api/products', (req, res) => {
|
|
const data = products.getAll();
|
|
res.send(data);
|
|
});
|
|
|
|
app.listen(PORT, HOST, () => {
|
|
console.log(color.magenta(`🚀 Server is running at: ${BASE_URL}`));
|
|
console.log(color.yellow('CTRL + C to close.'));
|
|
});
|