기본적인 request에 대한 middleware를 작성하고, 이제 crudapi를 본격적으로 만들어 봅니다.
import * as express from "express";
import { Cat, CatType } from "./app.model";
const app: express.Express = express();
// const data = [1, 2, 3, 4];
//middleware
app.use((req, res, next) => {
//next는 다음라우터로 넘어가는 함수
console.log(req.rawHeaders[1]);
console.log("this is logging middleware");
next();
});
// 고양이 전체 데이터 조회
// 특정 고양이 데이터 조회
app.use((req, res, next) => {
console.log("this is error middleware");
res.send({ error: "404 not found error" });
});
app.listen(8000, () => {
console.log("server is on.........");
});
현재는 연결할 DB가 없으니 임의로 만든 cats데이터를 활용하여 api를 만들어 만듭니다.
import * as express from "express";
import { Cat, CatType } from "./app.model";
const app: express.Express = express();
// const data = [1, 2, 3, 4];
//middleware
app.use((req, res, next) => {
//next는 다음라우터로 넘어가는 함수
console.log(req.rawHeaders[1]);
console.log("this is logging middleware");
next();
});
// 고양이 전체 데이터 조회
app.get("/cats", (req, res) => {
try {
const cats = Cat;
// throw new Error("db connect error"); => 직접 에러를 던져볼 수 있습니다.
res.status(200).send({
success: true,
data: {
cats,
},
});
} catch (error) {
res.status(400).send({
success: false,
error: error.message,
});
}
});
// 특정 고양이 데이터 조회 [동적 라우팅]
app.get("/cats/:id", (req, res) => {
try {
const params = req.params;
const cat = Cat.find((cat) => {
return cat.id === params.id;
});
// throw new Error("db connect error"); => 직접 에러를 던져볼 수 있습니다.
res.status(200).send({
success: true,
data: {
cat,
},
});
} catch (error) {
res.status(400).send({
success: false,
error: error.message,
});
}
});
app.use((req, res, next) => {
console.log("this is error middleware");
res.send({ error: "404 not found error" });
});
app.listen(8000, () => {
console.log("server is on.........");
});
이렇게 post도 추가합니다. 그리고 express는 기본적으로 json을 받는 기능이 없기 때문에 middleware를 추가해줍니다.
...
// json middleware
app.use(express.json());
...
// CREATE 새로운 고양이 추가 api
app.post("/cats", (req, res) => {
try {
const data = req.body;
// console.log(req.body);
console.log(data);
Cat.push(data);
res.status(200).send({
success: true,
data: {},
});
} catch (error) {
res.status(400).send({
success: false,
error: error.message,
});
}
});
이렇게