Node.js, Express 및 MongoDB로 REST API 구축
20324 단어 nodemongodbtutorialjavascript
이 튜토리얼에서는 Node.js 서버와 MongoDB 데이터베이스를 사용하여 REST API를 구축하는 방법을 배웁니다. 우리는 일을 단순하게 유지하고 "학생"기록을 저장하는 "학교"데이터베이스를 구축할 것입니다. 여기에서 사용된 기본 개념을 이해하고 나면 더 복잡한 API 기반 애플리케이션을 만드는 방법을 잘 알게 될 것입니다.
참고: 계속하기 전에 Node.js 및 MongoDB을 설치해야 합니다.
다음 명령으로 폴더를 만들고 프로젝트를 시작하여 시작하겠습니다.
mkdir school
cd school
npm init -y
이제 NPM을 사용하여 필요한 종속성을 설치할 수 있습니다.
npm install express mongoose body-parser
express
– 다양한 API 끝점에 대한 HTTP 유틸리티 메서드 및 경로를 제공합니다. mongoose
– 응용 프로그램 데이터를 모델링하기 위한 간단한 스키마 기반 솔루션을 제공합니다. body-parser
– 핸들러 전에 미들웨어에서 들어오는 요청을 구문 분석합니다. index.js
파일에서 다음으로 방금 설치한 종속 항목을 포함하여 시작할 수 있습니다.const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
그런 다음 JSON을 사용하도록 시작
express()
및 설정bodyParser
:const app = express();
app.use(bodyParser.json());
mongoose
를 사용하여 "학교"데이터베이스에 연결합니다. 이 데이터베이스는 첫 번째 학생 기록이 추가될 때 자동으로 생성되므로 아직 존재할 필요가 없습니다.const db = "mongodb://localhost/school";
mongoose
.connect(db, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log("MongoDB Connected"))
.catch((err) => console.log(err));
마지막으로 앱에 포트 5000에서 수신하도록 지시하고 서버가 실행 중일 때 메시지를 기록합니다.
app.listen(5000, () => console.log("Server Running"));
이제 다음 명령을 실행하여 서버를 시작할 수 있습니다.
node index.js
성공하면 터미널에 "MongoDB 연결됨"및 "서버 실행 중"이 표시됩니다.
또한 파일 변경 사항을 모니터링하고 매번 수동으로 수행할 필요가 없도록 서버를 자동으로 다시 시작하는
nodemon
도 설치합니다.npm install nodemon --save-dev
nodemon index.js
모델 만들기
모델은 MongoDB 데이터베이스에서 문서를 만들고 읽는 일을 담당합니다.
models
라는 새 폴더를 만들고 내부에 다음과 함께 student.js
파일을 추가합니다.const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const StudentSchema = new Schema({
name: { type: String, required: true },
age: { type: Number, required: true },
email: { type: String, required: true },
});
module.exports = mongoose.model("student", StudentSchema);
이는 학생 컬렉션의 스키마(이름, 연령 및 이메일)를 정의합니다.
경로 만들기
경로는 특정 URL(경로)이 요청될 때 실행할 코드를 애플리케이션에 알려줍니다.
새 학생 기록을 데이터베이스에 추가할 라우터부터 시작하겠습니다.
routes
라는 새 폴더를 만들고 내부에 다음과 함께 student.js
파일을 추가합니다.const express = require("express");
const router = express.Router();
const Student = require("../models/student");
router.post("/add", (req, res) => {
const newStudent = new Student({
name: req.body.name,
age: req.body.age,
email: req.body.email,
});
newStudent
.save()
.then(() => res.json("Student Added..."))
.catch((err) => res.status(400).json("Error: " + err));
});
module.exports = router;
그런 다음 다음을 사용하여 라우터에
index.js
파일을 포함해야 합니다.const studentsRouter = require("./routes/student");
app.use("/students", studentsRouter);
다른 끝점을 만들기 전에 무료 데스크톱 API 클라이언트(Windows 및 OSX)를 사용하여 모든 것이 작동하는지 테스트해 보겠습니다Insomnia. 설치가 완료되면 다음 설정으로 "새 요청"을 생성합니다.
다음 JSON 데이터를 사용하여
http://localhost:5000/students/add
에 요청을 보냅니다.성공하면 "학생 추가됨"메시지가 표시됩니다.
그런 다음 MongoDB Compass을 사용하여 데이터베이스를 시각화할 수 있습니다.
/add
엔드포인트가 작동하면 다른 경로 생성을 계속 진행하겠습니다.모든 경로를
routes/student.js
파일에 추가해야 합니다.먼저 모든 학생을 JSON 형식으로 반환하는 GET 요청:
// http://localhost:5000/students/
router.get("/", (req, res) => {
Student.find()
.then((students) => res.json(students))
.catch((err) => res.status(400).json("Error: " + err));
});
다음으로 일치하는 _id가 있는 학생 기록을 삭제합니다.
// http://localhost:5000/students/delete/STUDENT_ID
router.delete("/delete/:id", (req, res) => {
Student.findByIdAndDelete(req.params.id)
.then(() => res.json("Student Deleted..."))
.catch((err) => res.status(400).json("Error: " + err));
});
마지막으로 일치 항목
_id
으로 학생 기록을 업데이트합니다.// http://localhost:5000/students/update/STUDENT_ID
router.post("/update/:id", (req, res) => {
Student.findById(req.params.id)
.then((student) => {
student.name = req.body.name;
student.age = req.body.age;
student.email = req.body.email;
student
.save()
.then(() => res.json("Student Updated..."))
.catch((err) => res.status(400).json("Error: " + err));
})
.catch((err) => res.status(400).json("Error: " + err));
});
학생을 업데이트할 때 업데이트된 JSON 데이터도 전달해야 합니다.
{
"name" : "Amanda Jane Burns",
"age" : "14",
"email" : "[email protected]"
}
이것으로 API 설정이 완료되었습니다. 읽어주셔서 감사합니다!
Reference
이 문제에 관하여(Node.js, Express 및 MongoDB로 REST API 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/michaelburrows/build-a-rest-api-with-node-js-express-and-mongodb-l8e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)