Express.JS를 사용하여 API 빌드
요약
이 포스트에서는 Node.JS에서 블로그 웹 API를 구축하는 방법을 보여 드리겠습니다. 이 튜토리얼에서는 HTTP 요청을 처리하기 위해 Express.JS를 사용하고 데이터를 저장하기 위해 Mongodb를 사용합니다.
목차
소개
Node.JS is a platform used for building server side applications using Javascript. With Node.JS, developers are able to build backend APIs in minutes. It has a great community and a huge set of packages. These packages help the developers for building great applications. Developers does not require to build everything from scratch. We mainly focus on two packages. First is Express.JS, which is one of the most used packages by developers to build web APIs. Second is mongoose, which is used to simplify the communication between Node.JS and MongoDB.
요구 사항
설정
A typical Node.JS application has a root directory which contains at least two files package.json (holds metadata about the application and required npm packages), and index.js file (a javascript entry file).
- Create the directory of the project
mkdir blog-server
cd blog-server
- Create package.json file
npm init -y
- Create index.js file (entry file)
// index.js
const PORT = 3000;
console.log(`A node.js server that runs on ${PORT}`);
- Run the application
node index.js
패키지
우리의 express.js 웹 애플리케이션에는 이러한 패키지가 필요합니다.
참고: nodemon은 개발 중에만 필요하기 때문에 개발 종속성으로 사용됩니다.
npm install --save-dev nodemon
npm install --save express cors body-parser morgan mongoose
const express = require("express");
const cors = require("cors");
const bodyParser = require("body-parser");
const morgan = require("morgan");
const mongoose = require("mongoose");
데이터 베이스
As mentioned above, we are using Mongodb for storing application related information. We use mongoose as object mapper between Mongodb and node.js application models.
- Connect to mongodb
mongoose.connect("mongodb://localhost:27017/blog");
- Create mongoose schema to define the structure of the document that is read from or write to Mongodb. Create a schema named postSchema to define the structure of posts, which it has title and body.
const postSchema = new mongoose.Schema(
{
title: { type: String, required: true },
body: { type: String, required: true },
},
{ timestamps: true }
);
MVC와 같은 애플리케이션
An MVC app is structured into three layers [models, views, controllers]. Sometimes, extra layers are added to MVC such as DAL, Services, Repositories.
In this example, the app is divided into three layers [models → services →controllers]. Usually, each layer exists in a directory.
모델
모델은 도메인별 데이터를 나타냅니다. 모델은 위에서 정의한 postSchema를 기반으로 합니다.
const Post = mongoose.model("post", postSchema);
서비스
서비스 계층은 컨트롤러와 모델 간의 통신을 중재하는 MVC의 추가 계층입니다. 이 레이어는 더 많은 추상화와 테스트 용이성을 추가합니다.
두 개의 서비스를 노출하는 postService 엔터티를 만듭니다.
const postService = {
find: () => Post.find({}),
save: async (postData) => {
const post = new Post({ ...postData });
await post.save();
return post;
},
};
컨트롤러
이름에서 알 수 있듯이 컨트롤러는 들어오는 요청을 제어하고 오류를 포착하고 클라이언트에 응답을 보냅니다.
두 가지 작업이 있는 postController를 만듭니다.
const postController = {
find: async (req, res, next) => {
try {
const posts = await postService.find({ ...req.query });
res.json(posts);
} catch (error) {
error.msg = "failed to retrieve posts";
next(error);
}
},
save: async (req, res, next) => {
try {
const post = await postService.save(req.body);
res.json(post);
} catch (error) {
error.msg = "failed to create post";
next(error);
}
},
};
익스프레스 신청
Express is a routing and middleware web framework that has minimal functionality of its own: An Express application is essentially a series of middleware function calls.
- Create an express application
const app = express();
Middlewares
Middlewares are functions executed before or after the controller actions.
app.use(cors());
app.use(morgan("tiny"));
app.use(bodyParser.json());
익스프레스 라우터
익스프레스 라우터는 요청을 컨트롤러의 특정 작업으로 라우팅합니다.
처리할 Express Router를 기반으로 두 개의 경로 정의
const router = express.Router();
router.get("/posts", postController.find);
router.post("/posts", postController.save);
app.use("/api", router);
완전한 예
I have included a complete express server example.
결론
You have learnt in detail, how to create an express server and connect to mongodb for storing data. You have exposed some APIs. In this tutorial I have written all code in one file for simplicity. You can visit this repository for the complete example.
Reference
이 문제에 관하여(Express.JS를 사용하여 API 빌드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bewarusman/building-apis-using-express-js-4cfb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)