댓글 검색 목록

[Nodejs] Node, Express 및 MongoDB를 사용하여 RESTful CRUD API 빌드

페이지 정보

작성자 운영자 작성일 20-05-08 17:30 조회 865 댓글 0

이 기사에서는 Node.js, Express 및 Mongoose로 Restful CRUD API를 생성하여 MongoDB 인스턴스와 상호 작용하여 웹 앱에 강력한 기능을 제공하는 방법에 대해 설명합니다.


https://codesource.io/build-a-restful-crud-api-using-node-express-and-mongodb/ 


우리 API에는 다음과 같은 기능이 포함됩니다.


  • Handle CRUD operations
  • Have an API URL (http://localhost:3000/tasks 
  • User can update, edit, delete and add tasks directly in the database
  • Return JSON data

API 생성 


시작하기 전에 Mongo를 로컬로 설치해야 합니다. 이 작업을 수행하려면 "공식 다운로드 페이지"를 방문하십시오. 또한 MongoDB의 공식 GUI 인 Compass를 설치할 수도 있습니다.


디렉토리, 파일 생성 및 프로젝트 초기화로 시작하겠습니다.


mkdir vurcrudappapi

cd vurcrudappapi

touch server.js


API라는 폴더를 만듭니다.


mkdir api


API라는 이 폴더 안에 다음을 실행하여 모델, 경로 및 컨트롤러라는 별도의 폴더 세 개를 만듭니다.


mkdir api/controllers

mkdir api/models

mkdir api/routes


api / controller 폴더에 taskController.js를 작성하고, routes 폴더에 taskRoutes.js를 작성하고, 모델 폴더에 taskModel을 작성하십시오.


touch api/controllers/taskController.js

touch api/model/taskModel.js

touch api/routes/taskRoutes.js


이제 다음 명령을 실행하여 package.json 파일을 작성하십시오.


npm init


폴더 구조는 다음과 같습니다.


folder-structure.png 


의존성 설치 


API에 대한 종속성을 설치하려면 다음 명령을 실행하십시오.


npm i express cors body-parser mongoose

npm i nodemon --save-dev


  • CORS는 다음을 제공하기 위한 node.js 패키지입니다.
    다양한 옵션으로 CORS를 활성화하는 데 사용할 수 있는 Connect / Express® 미들웨어.
  • Body-parser : Node.js 본문 구문 분석 미들웨어.
  • Mongoose는 MongoDB 및 노드 용 ODM (Object Data Modeling) 라이브러리입니다
  • Nodemon은 소스의 변경 사항을 모니터링하고 서버를 자동으로 다시 시작하는 유틸리티입니다.

다음으로 package.json을 열고 스크립트 섹션을 다음과 같이 변경하십시오.


"scripts": {

  "start": "nodemon server.js"

},


서버 설정 


taskController.js에 다음 코드를 추가하십시오.


const mongoose = require('mongoose');

const task = mongoose.model('task');


exports.list_all_tasks = (req, res) => {

  task.find({}, (err, tasks) => {

    if (err) res.send(err);

    res.json(tasks);

  });

};


exports.create_a_task = (req, res) => {

  const newTask = new task(req.body);

  newTask.save((err, task) => {

    if (err) res.send(err);

    res.json(task);

  });

};


exports.read_a_task = (req, res) => {

  task.findById(req.params.taskId, (err, task) => {

    if (err) res.send(err);

    res.json(task);

  });

};


exports.update_a_task = (req, res) => {

  task.findOneAndUpdate(

    { _id: req.params.taskId },

    req.body,

    { new: true },

    (err, task) => {

      if (err) res.send(err);

      res.json(task);

    }

  );

};


exports.delete_a_task = (req, res) => {

  task.deleteOne({ _id: req.params.taskId }, err => {

    if (err) res.send(err);

    res.json({

      message: 'task successfully deleted',

     _id: req.params.taskId

    });

  });

};


위의 코드 스 니펫에서 모델을 가져온 다음 원하는 CRUD 기능에 해당하는 5 개의 함수를 정의합니다. 자세한 내용은 몽구스 설명서를 확인할 수 있습니다


taskModel.js에 다음 코드를 추가하십시오.


const mongoose = require('mongoose');


const { Schema } = mongoose;


const taskSchema = new Schema(

  {

    task1: {

      type: String,

      required: 'task1 cannot be blank'

    },

    task2: {

      type: String,

      required: 'task2  cannot be blank'

    }

  },

  { collection: 'task' }

);


module.exports = mongoose.model('task', taskSchema);


마찬가지로 RoutesModel.js에 다음 코드를 추가하십시오.


const taskBuilder = require('../controllers/taskController');


module.exports = app => {

  app

    .route('/tasks')

    .get(taskBuilder.list_all_tasks)

    .post(taskBuilder.create_a_task);


  app

    .route('/tasks/:taskId')

    .get(taskBuilder.read_a_task)

    .put(taskBuilder.update_a_task)

    .delete(taskBuilder.delete_a_task);

};


코드 스니펫에서 다음 경로를 정의합니다.


  • GET /tasks—return a list of all tasks
  • POST /tasks—create a new task
  • GET /tasks/:taskId—get a single task
  • PUT /task/:taskId—update a single task
  • DELETE /tasks/:taskId—delete a single task

마지막으로, server.js를 열고 다음 코드를 추가하십시오.


const express = require('express');

const cors = require('cors');

const mongoose = require('mongoose');

const bodyParser = require('body-parser');


global.Task = require('./api/models/taskModel');

const routes = require('./api/routes/taskRoutes');


mongoose.Promise = global.Promise;

mongoose.set('useFindAndModify', false);

mongoose.connect(

  'mongodb://localhost/Vuecrudapp',

  { useNewUrlParser: true }

);


const port = process.env.PORT || 3000;

const app = express();


app.use(cors());

app.use(bodyParser.urlencoded({ extended: true }));

app.use(bodyParser.json());


routes(app);

app.listen(port);


app.use((req, res) => {

  res.status(404).send({ url: `${req.originalUrl} not found` });

});


console.log(`Server started on port ${port}`);


위의 코드 스니펫에서 Mongoose의 'connect'메소드를 사용하여 mongo Compass를 사용하여 만든 Vuecrupsapp 데이터베이스에 연결하고 새로운 Express 앱을 작성하고 bodyParser 및 cors 미들웨어를 사용하도록 지시합니다.


그런 다음 "api / routes / taskRoutes.js"에서 정의한 경로를 사용하고 포트 3000에서 연결을 수신하도록 지시합니다. 마지막으로 존재하지 않는 경로를 처리하는 기능을 정의합니다.


이제 다음 명령을 실행하여 노드 및 MongoDB 서버를 시작하십시오.


npm run start

mongod


RESTful CRUD API 테스트 


PostMan 앱을 시작하여 API 메소드 생성 테스트


새 작업 목록을 만들어 시작하겠습니다. 방법으로 POST를 선택하고 URL로 http : // localhost : 3000 / tasks를 입력하십시오.


postman-1.png 


이제 아래 필드에 두 개의 키 페어를 입력하고 전송을 누릅니다. 응답을 통해 서버에서 새로 작성된 오브젝트를 수신합니다.


이 API의 구현을 Vuecrud 앱으로 읽을 수 있습니다.


결론 


Node.js로 Restful CRUD API를 만드는 법을 배웠기를 바랍니다. 모든 기사는 더 나아질 수 있으므로 아래 의견에 제안과 기여를 남겨주십시오. 단계에 대해 궁금한 점이 있으면 아래의 의견 섹션에도 문의하십시오.


여기에서 CodeSource에 액세스 할 수 있습니다.



댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.