Skip to content

Commit 2123215

Browse files
author
Maximilian Schwarzmüller
committed
added request body parsing and cors config
1 parent 81ad2b7 commit 2123215

4 files changed

Lines changed: 47 additions & 20 deletions

File tree

api/routes/orders.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,13 @@ router.get('/', (req, res, next) => {
99
});
1010

1111
router.post('/', (req, res, next) => {
12+
const order = {
13+
productId: req.body.productId,
14+
quantity: req.body.quantity
15+
};
1216
res.status(201).json({
13-
message: 'Order was created'
17+
message: 'Order was created',
18+
order: order
1419
});
1520
});
1621

api/routes/products.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,13 @@ router.get('/', (req, res, next) => {
88
});
99

1010
router.post('/', (req, res, next) => {
11+
const product = {
12+
name: req.body.name,
13+
price: req.body.price
14+
};
1115
res.status(201).json({
12-
message: 'Handling POST requests to /products'
16+
message: 'Handling POST requests to /products',
17+
createdProduct: product
1318
});
1419
});
1520

app.js

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,45 @@
1-
const express = require('express');
1+
const express = require("express");
22
const app = express();
3-
const morgan = require('morgan');
3+
const morgan = require("morgan");
4+
const bodyParser = require("body-parser");
45

5-
const productRoutes = require('./api/routes/products');
6-
const orderRoutes = require('./api/routes/orders');
6+
const productRoutes = require("./api/routes/products");
7+
const orderRoutes = require("./api/routes/orders");
78

8-
app.use(morgan('dev'));
9+
app.use(morgan("dev"));
10+
app.use(bodyParser.urlencoded({ extended: false }));
11+
app.use(bodyParser.json());
12+
13+
app.use((req, res, next) => {
14+
res.header("Access-Control-Allow-Origin", "*");
15+
res.header(
16+
"Access-Control-Allow-Headers",
17+
"Origin, X-Requested-With, Content-Type, Accept, Authorization"
18+
);
19+
if (req.method === 'OPTIONS') {
20+
res.header('Access-Control-Allow-Methods', 'PUT, POST, PATCH, DELETE, GET');
21+
return res.status(200).json({});
22+
}
23+
next();
24+
});
925

1026
// Routes which should handle requests
11-
app.use('/products', productRoutes);
12-
app.use('/orders', orderRoutes);
27+
app.use("/products", productRoutes);
28+
app.use("/orders", orderRoutes);
1329

1430
app.use((req, res, next) => {
15-
const error = new Error('Not found');
16-
error.status = 404;
17-
next(error);
18-
})
31+
const error = new Error("Not found");
32+
error.status = 404;
33+
next(error);
34+
});
1935

2036
app.use((error, req, res, next) => {
21-
res.status(error.status || 500);
22-
res.json({
23-
error: {
24-
message: error.message
25-
}
26-
});
37+
res.status(error.status || 500);
38+
res.json({
39+
error: {
40+
message: error.message
41+
}
42+
});
2743
});
2844

29-
module.exports = app;
45+
module.exports = app;

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"author": "Maximilian Schwarzmüller",
1616
"license": "ISC",
1717
"dependencies": {
18+
"body-parser": "^1.18.2",
1819
"express": "^4.16.2",
1920
"morgan": "^1.9.0"
2021
},

0 commit comments

Comments
 (0)