POST /users/:userId/orders ์ ์์ฒญ์ ๋ณด๋์ ๋, ์ ์์ ์ธ ์์ฒญ์ด๋ผ๋ฉด 500
or 201
์ผ๋ก ์๋ต๋์ด์ผ ํ๊ณ ,
์ ์์ ์ธ ์์ฒญ์ด ์๋๋ผ๋ฉด 400
์ผ๋ก ์๋ต๋์ด์ผ ํ๋ค.
post: (req, res) => {
const userId = req.params.userId;
const { orders, totalPrice } = req.body;
if (!!orders && !!totalPrice) {
models.orders.post(userId, orders, totalPrice, (error, result) => {
if (error) {
res.status(500).send('Internal Server Error');
} else {
res.sendStatus(201);
}
});
}
res.status(400).json('badbad');
},
๋ฌธ์ ๋ฐ์์ ๋ค์๊ณผ ๊ฐ๋ค.
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
ํ๋ฒ์ response๊ฐ ์คํ๋๋ฉด ๋๋ค๋ฉด ๋ค์ ์ฝ๋๋ ์คํ๋์ง ์๋๋ค๊ณ ์๊ฐํ์๋ค. ์ฆ, return ํด์ค ๊ฒ๊ณผ ๊ฐ์ด, ํจ์๊ฐ ๋๋๋ฒ๋ฆฐ๋ค๊ณ ์๊ฐํ์๋ค.
์์ ๊ฐ์ด ์ด๋ค๋ฉด res.sendStatus(201)
์ res.sendStatus(400)
๋ชจ๋ ์คํ๋๋ค.
์ฆ, ๋๋ฒ์ response๊ฐ ๋ณด๋ด์ง๊ณ , ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
import express from 'express';
const app = express();
app.use(express.json());
app.get('/users/:id', (req, res, next) => {
let id = req.params.id;
if (id === 'a') {
console.log(`before sending 200 status`);
res.status(200).send('success');
}
console.log('after sending 200 status , id', id);
res.status(404).send('failed');
});
app.listen(8080);
GET /users/1 ์์ฒญ์ ๋ณด๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋ฐ๊ฒ ๋๋ค.
before sending 200 status
after sending 200 status , id a
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
if๋ฌธ ์์ console๊ณผ if๋ฌธ ๋ฐ์ console ๋ชจ๋๊ฐ ์คํ๋์์์ ํ์ธํ ์ ์๋ค.
์๋ฌ๋ฉ์์ง : ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ธ ํ ๋ค์ headers๋ฅผ setํ ์ ์๋ค.
์ฆ, response๊ฐ ์ด๋ฃจ์ด์ก๋ค๊ณ ํด์ ๋ฏธ๋ค์จ์ด ํจ์๊ฐ ๋๋๋ ๊ฒ์ด ์๋๋ค. ์ดํ์ ์ฝ๋๊ฐ ๋จ์์๋ค๋ฉด ์ฝ๋๊ฐ ์ด์ด์ ์คํ๋๋ค.
post: (req, res) => {
const userId = req.params.userId;
const { orders, totalPrice } = req.body;
if (!!orders && !!totalPrice) {
models.orders.post(userId, orders, totalPrice, (error, result) => {
if (error) {
res.status(500).send('Internal Server Error');
} else {
res.sendStatus(201);
}
});
} else {
res.sendStatus(400);
}
}
if else๋ฌธ์ผ๋ก ๋ถ๊ธฐ๋ฅผ ํด์ฃผ๊ฑฐ๋ return๋ฌธ์ ์ฌ์ฉํ์ฌ ํ๋ฒ์ response๋ง ๋ณด๋ด์ง๋๋ก ํด์ผํ๋ค.
์ ์์ ์ผ๋ก ์๋ต์ ๋ฐ์์จ๋ค.