[NestJS] 4. express기본 디자인패턴을 통해서 고양이 crud api만들기

주수호·2022년 5월 14일
0

기본적인 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,
    });
  }
});

이렇게

profile
항상 준비하는 엔지니어

0개의 댓글