이 기사에서는 Node.js, Express 및 Mongoose로 Restful CRUD API를 생성하여 MongoDB 인스턴스와 상호 작용하여 웹 앱에 강력한 기능을 제공하는 방법에 대해 설명합니다.
https://codesource.io/build-a-restful-crud-api-using-node-express-and-mongodb/
우리 API에는 다음과 같은 기능이 포함됩니다.
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
폴더 구조는 다음과 같습니다.
의존성 설치
API에 대한 종속성을 설치하려면 다음 명령을 실행하십시오.
npm i express cors body-parser mongoose
npm i nodemon --save-dev
다음으로 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);
};
코드 스니펫에서 다음 경로를 정의합니다.
마지막으로, 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를 입력하십시오.
이제 아래 필드에 두 개의 키 페어를 입력하고 전송을 누릅니다. 응답을 통해 서버에서 새로 작성된 오브젝트를 수신합니다.
이 API의 구현을 Vuecrud 앱으로 읽을 수 있습니다.
결론
Node.js로 Restful CRUD API를 만드는 법을 배웠기를 바랍니다. 모든 기사는 더 나아질 수 있으므로 아래 의견에 제안과 기여를 남겨주십시오. 단계에 대해 궁금한 점이 있으면 아래의 의견 섹션에도 문의하십시오.
여기에서 CodeSource에 액세스 할 수 있습니다.
등록된 댓글이 없습니다.