Express.js 및 MongoDB를 사용하여 영화 API를 빌드하는 방법 - 소스 코드 포함

안녕하세요 여러분 😃
이 기사에서는 Express 및 MongoDB를 사용하여 영화 REST API를 빌드합니다.

먼저 몽구스를 사용하여 Movie 데이터베이스 모델을 구현합니다. 그런 다음 영화 CRUD 작업(만들기, 읽기, 업데이트, 삭제)을 처리할 컨트롤러를 만듭니다. 마지막으로 경로를 만듭니다.

참고: GitHub에서 코드를 자유롭게 복제하십시오.

이 링크를 참조하지 않는 경우 Node.js 및 MongoDB를 설치했는지 확인하세요 👇
MongoDB
NodeJS

1. 프로젝트 설정
터미널을 열고 다음 명령을 복사합니다.

npm init -y
npm i express mongoose body-parser nodemon


2. 몽고DB에 연결
Linux 및 macOS에서
새 터미널을 열고 다음 명령을 복사합니다.

sudo mongod


Windows에서는 mongodb 나침반을 사용하여 연결하십시오.

3. 프로젝트 구조

MOVIES-API/
├─ controllers/
│  ├─ movie.controller.js
├─ models/
│  ├─ movie.model.js
├─ routes/
│  ├─ movie.route.js
├─ server.js
├─ package.json/


4. 익스프레스 서버 설정
이 코드를 server.js에 복사합니다.

const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const movieRouter = require("./routes/movie.route");
const app = express();

app.get("/", (req, res) => {
  return res.send("Movies REST API");
});
app.use(bodyParser.json());
mongoose.connect("mongodb://localhost:27017/movies-api", {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

app.use("/", movieRouter);
app.listen(4000, () => {
  console.log("Listening on port 4000");
});


pacakage.json에서 dev 명령을 scripts 개체에 추가합니다.

 "scripts": {
    "dev": "nodemon server.js"
  },


5. 데이터베이스 모델
이 코드를 models/movie.model.js에 복사합니다.

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const MovieSchema = Schema({
  title: {
    type: String,
    required: "Please enter movie title",
  },
  genre: String,
  rating: Number,
  isReleased: {
    type: Boolean,
    default: true,
  },
});
module.exports = mongoose.model("Movie", MovieSchema);


6. 루트
이 코드를 routes/movie.route.js에 복사합니다.

const express = require("express");
const router = express.Router();
const {
  createMovie,
  getAllMovies,
  getMovieById,
  updateMovie,
  deleteMovie,
} = require("../controllers/movie.controller");
router.route("/api/movies").get(getAllMovies).post(createMovie);
router
  .route("/api/movies/:movieId")
  .get(getMovieById)
  .put(updateMovie)
  .delete(deleteMovie);
module.exports = router;


7. 컨트롤러
이 코드를 routes/movie.controller.js에 복사합니다.

const Movie = require("../models/movie.model");
const getAllMovies = (req, res) => {
  Movie.find({}, (error, movies) => {
    if (error) return res.status(400).json({ error: "Can't get movies" });
    return res.json(movies);
  });
};

const getMovieById = (req, res) => {
  const { movieId } = req.params;
  Movie.findById(movieId, (error, movie) => {
    if (error) return res.status(400).json({ error: "Can't find movie" });
    if (movie) return res.json({ movie: movie });
    return res.status(404).json({ error: "No movie found" });
  });
};

const updateMovie = (req, res) => {
  const { movieId } = req.params;
  const movie = req.body;
  Movie.findOneAndUpdate(
    { _id: movieId },
    movie,
    { new: true },
    (error, updatedMovie) => {
      if (error) return res.status(400).json({ error: "Can't update movie" });
      console.log(updatedMovie);
      return res.json({ movie: updatedMovie });
    }
  );
};
const deleteMovie = (req, res) => {
  const { movieId } = req.params;
  Movie.findByIdAndDelete(movieId, (error) => {
    if (error) return res.status(400).json({ error: "Can't delete movie" });
    return res.json({ message: "Deleted successfully" });
  });
};
const createMovie = (req, res) => {
  const movie = new Movie(req.body);
  movie.save((err, data) => {
    if (err) return res.status(400).json({ error: "Couldn't create movie" });
    return res.json({ movie: data });
  });
};
module.exports = {
  getAllMovies,
  createMovie,
  updateMovie,
  deleteMovie,
  getMovieById,
};


8. 프로젝트 실행

새 터미널 열기

npm run dev


요약
이 튜토리얼에서는 Express 및 MongoDB를 사용하여 영화 CRUD 작업을 관리하기 위한 REST API를 구축했습니다.

이 튜토리얼이 도움이 되었기를 바랍니다.

좋은 웹페이지 즐겨찾기