Bản soạn sẵn trong Nodejs là gì?

Mẫu khởi động plug-and-play có thể giúp bạn bắt đầu phát triển API ứng dụng web của mình

Trong bài viết này, chúng ta sẽ xây dựng một mẫu khởi động cơ bản (hoặc bản soạn sẵn) có thể được sử dụng để xây dựng các API REST mạnh mẽ và an toàn bằng cách sử dụng Node, Express và Mongoose. Nó có thể được sử dụng cho bất kỳ loại dự án nào bất kể logic và yêu cầu

Bạn có thể hỏi rằng có nhiều mẫu dành cho người mới bắt đầu và tại sao tôi lại phát minh lại bánh xe. Tất cả các mẫu hiện có đều tuyệt vời, nhưng tôi cảm thấy rằng tôi phải phát triển một mẫu theo phong cách của mình để một số nhà phát triển ngoài kia có phong cách phát triển tương tự có thể thích và được hưởng lợi từ nó

Đã nói rằng, chúng ta hãy bắt đầu

điều kiện tiên quyết

Bắt đầu 🚀️

Tạo một thư mục mới có tên là “node-boilerplate” và điều hướng đến thư mục

mkdir node-boilerplate && cd node-boilerplate

Khởi tạo một dự án mới bằng lệnh

npm i express mongoose dotenv uuid mongo-sanitize morgan --save

0

Bạn sẽ được hỏi một loạt câu hỏi về dự án

Bản soạn sẵn trong Nodejs là gì?

Sau khi trả lời những câu hỏi đó, hãy xác minh thông tin chi tiết và nhấn “Enter”. Bạn có thể tìm thấy một tệp mới có tên là “gói. json” được tạo trong thư mục gốc dự án của bạn

Đây giống như một tệp cấu hình cho ứng dụng của bạn

Bây giờ, chúng tôi sẽ cài đặt tất cả các phụ thuộc mà tôi sẽ sử dụng phổ biến trong khi xây dựng API REST bằng Node, Express và MongoDB

npm i express mongoose dotenv uuid mongo-sanitize morgan --save

Sử dụng sudo nếu cần

Bây giờ chúng ta hãy đi qua từng mô-đun để hiểu mục đích của nó

  • Thể hiện. Express là một khung web nhanh, thiết yếu và nổi tiếng nhất của Node. js, được thiết kế để xây dựng các ứng dụng web và API. Nó đã được gọi là khung máy chủ tiêu chuẩn thực tế cho Node. js

  • cầy mangut. Mongoose là thư viện Mô hình hóa dữ liệu đối tượng (ODM) cho MongoDB và Node. js. Nó quản lý các mối quan hệ giữa dữ liệu, cung cấp xác thực lược đồ và được sử dụng để dịch giữa các đối tượng trong mã và biểu diễn của các đối tượng đó trong MongoDB

  • dotenv. Trong các hệ thống sản xuất, chúng ta không nên mã hóa cứng dữ liệu nhạy cảm như Khóa API, Mã thông báo bí mật, v.v. trực tiếp trong cơ sở mã (dựa trên phương pháp Ứng dụng mười hai yếu tố). Chúng tôi sẽ chuyển chúng dưới dạng biến môi trường. Mô-đun này giúp chúng tôi tải các biến môi trường từ một. tập tin env vào

  • UUID. Chúng tôi cần tạo một id duy nhất cho một số nội dung, bất kể ứng dụng là gì. Bất kể logic cốt lõi có thể là gì, chúng tôi sẽ cần tạo các id duy nhất trong ứng dụng của mình như “userId”, “ordered”, “articleId”, v.v. Vì vậy, đây là gói phổ biến để tạo id duy nhất ngẫu nhiên trong ứng dụng của chúng tôi

  • Mongo-vệ sinh. Mô-đun này được sử dụng để bảo mật ứng dụng của chúng tôi khỏi các cuộc tấn công đưa vào bộ chọn truy vấn. Chức năng khử trùng sẽ loại bỏ bất kỳ khóa nào bắt đầu bằng '$' trong đầu vào, vì vậy chúng tôi có thể chuyển nó sang MongoDB mà không phải lo lắng về việc người dùng độc hại ghi đè bộ chọn truy vấn

  • Morgan. Nó là một phần mềm trung gian ghi nhật ký yêu cầu HTTP. Chúng tôi sẽ sử dụng gói này để ghi lại các yêu cầu tấn công máy chủ của chúng tôi. Mô-đun này hỗ trợ các tùy chọn khác nhau

Sau khi cài đặt tất cả các mô-đun, bạn phải thấy dòng sau ở cuối thiết bị đầu cuối của mình

Nếu có bất kỳ lỗ hổng nào, hãy nâng cấp ngay mô-đun có lỗ hổng lên phiên bản mới nhất hoặc sử dụng lệnh

npm i express mongoose dotenv uuid mongo-sanitize morgan --save

1 để giảm thiểu sự cố

Tuy nhiên, lỗ hổng vẫn tồn tại?

Người mới bắt đầu học

Khi tất cả các phụ thuộc được cài đặt, hãy tạo một ứng dụng tệp. js trong thư mục cấp cao nhất của dự án

Thêm các nội dung sau vào nó

const express = require("express");

const morgan = require("morgan");

app.get("/ping", (req, res) => {

console.log("Server started listening on port : ", PORT);

Bây giờ hãy lưu tệp và chạy lệnh

npm i express mongoose dotenv uuid mongo-sanitize morgan --save

2 trong thiết bị đầu cuối của bạn. Nếu mọi thứ đều ổn, thì bạn phải xem

Server started listening on port: 5000

Từ giai đoạn này, chúng tôi sẽ thêm nhiều nội dung mới vào dự án của chúng tôi. Vì vậy, thật khó chịu khi khởi động lại máy chủ phát triển bất cứ khi nào chúng tôi thực hiện thay đổi

Vì vậy, chúng tôi có thể sử dụng thư viện có tên là gật đầu, giúp giảm rất nhiều thời gian phát triển bằng cách tự động khởi động lại ứng dụng của chúng tôi bất cứ khi nào bất kỳ tệp nào liên quan đến dự án của chúng tôi bị thay đổi và lưu lại

Hãy tiếp tục và cài đặt nó

Bạn có thể nhận thấy rằng chúng tôi sử dụng cờ

npm i express mongoose dotenv uuid mongo-sanitize morgan --save

3, có nghĩa là chúng tôi lưu mô-đun dưới dạng phụ thuộc phát triển

Chúng ta không nên sử dụng gật đầu trên sản xuất

Bây giờ hãy để chúng tôi thực hiện một số thay đổi đối với gói của chúng tôi. tập tin json

Thay thế phần

npm i express mongoose dotenv uuid mongo-sanitize morgan --save

4 bằng mã sau

Lưu gói của bạn. json và chạy lệnh sau

Bạn sẽ thấy đầu ra sau trong thiết bị đầu cuối của mình

Bản soạn sẵn trong Nodejs là gì?

Bạn có thể nhận thấy rằng nó nói “đang xem tiện ích mở rộng. js,mjs,json”. Trong trường hợp nếu bạn có các loại tệp khác, thì mặc định các thay đổi trong các tệp đó sẽ không được theo dõi bởi nodemon. Bạn có thể định cấu hình nhiều tiện ích mở rộng hơn bằng cách sử dụng tệp cấu hình gật đầu. Bạn có thể đọc thêm về nó trong tài liệu

Bây giờ hãy thử thực hiện một số thay đổi trong ứng dụng. js, nodemon sẽ tự động khởi động lại máy chủ cho chúng tôi

Điều đó thật tuyệt, phải không?

Kết nối với cơ sở dữ liệu

Bây giờ chúng ta có thể kết nối ứng dụng của mình với cơ sở dữ liệu bằng cầy mangut

Có hai lựa chọn. Chúng tôi có thể sử dụng MongoDB Atlas hoặc sử dụng máy chủ cộng đồng MongoDB cục bộ

Tôi thích đám mây MongoDB hơn cho sản xuất. Vì vậy, hãy đăng ký MongoDB Atlas, tạo một cụm và lấy chuỗi kết nối

Tạo một. env trong thư mục gốc của dự án. Đó là nơi chúng tôi sẽ lưu trữ tất cả các biến môi trường. Tất cả các biến môi trường sẽ được tải vào ứng dụng của chúng tôi bằng cách sử dụng mô-đun “dotenv” như đã thảo luận ở trên

Thêm chuỗi kết nối mongodb của bạn vào tệp

npm i express mongoose dotenv uuid mongo-sanitize morgan --save

5 và lưu nó

MONGO_URL =

Bây giờ hãy thêm các nội dung sau vào tệp

npm i express mongoose dotenv uuid mongo-sanitize morgan --save

6

const express = require("express");

.connect(process.env.MONGO_URL)

console.log("Database connection Success!");

console.error("Mongo Connection Error", err);

const PORT = process.env.PORT || 5000;

app.post("/ping", (req, res) => {

status: "Server is up and running",

console.log("Server started listening on port : ", PORT);

Lưu các tập tin

Đầu ra của bạn có thể chứa một số cảnh báo không dùng nữa từ 'mongoose'

(node:29440) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option`{ useNewUrlParser: true }` to MongoClient.connect

(node:29440) DeprecationWarning: current Server Discovery and Monitoring engine is

deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option `{ useUnifiedTopology: true }` to the MongoClient constructor.

Bao gồm các tùy chọn đó trong khi kết nối với cơ sở dữ liệu

.connect(process.env.MONGO_URL, {

console.log(“Database connection Success!”);

console.error(“MongoDB Connection Error”, err);

Bây giờ nếu bạn lưu ứng dụng. js, bạn sẽ không thấy những cảnh báo đó

Cho phép Ping

Đã đến lúc kiểm tra máy chủ của chúng tôi bằng Postman. Hãy để chúng tôi thử gửi yêu cầu “ping” đến máy chủ của chúng tôi bằng cách nhấn vào điểm cuối

npm i express mongoose dotenv uuid mongo-sanitize morgan --save

7

Bản soạn sẵn trong Nodejs là gì?

BÙM 🎉 Nó hoạt động. Nếu bạn ping nhiều lần và nhìn vào thiết bị đầu cuối của mình, bạn có thể thấy việc sử dụng thư viện 'morgan'

Bạn sẽ thấy một cái gì đó như thế này

Bản soạn sẵn trong Nodejs là gì?

Phân tích nhật ký Morgan

  • npm i express mongoose dotenv uuid mongo-sanitize morgan --save

    8. Phương thức yêu cầu HTTP (như GET, POST, PUT…)

  • npm i express mongoose dotenv uuid mongo-sanitize morgan --save

    9. Đường dẫn tài nguyên mà chúng tôi cố gắng truy cập

  • const express = require("express");

    const morgan = require("morgan");

    app.get("/ping", (req, res) => {

    console.log("Server started listening on port : ", PORT);

    0. Đó là mã trạng thái phản hồi

  • const express = require("express");

    const morgan = require("morgan");

    app.get("/ping", (req, res) => {

    console.log("Server started listening on port : ", PORT);

    1. Thời gian phản hồi tính bằng ms

  • const express = require("express");

    const morgan = require("morgan");

    app.get("/ping", (req, res) => {

    console.log("Server started listening on port : ", PORT);

    2. Độ dài nội dung phản hồi tính bằng byte

Thêm phần mềm trung gian bảo mật

Tạo một thư mục

const express = require("express");

const morgan = require("morgan");

app.get("/ping", (req, res) => {

console.log("Server started listening on port : ", PORT);

3 trong thư mục gốc của dự án. Bên trong thư mục tạo một tệp có tên

const express = require("express");

const morgan = require("morgan");

app.get("/ping", (req, res) => {

console.log("Server started listening on port : ", PORT);

4 chứa đoạn mã sau

Như đã thảo luận ở trên, bạn nên làm sạch yêu cầu trước khi sử dụng chúng trong truy vấn cầy mangut

Ngoài ra, API ứng dụng của chúng tôi chỉ được truy cập từ các miền cụ thể để chúng tôi có thể tránh được nhiều lỗ hổng bảo mật

Để đạt được điều đó, chúng ta cần tạo một phần mềm trung gian và plugin khác cho phần mềm trung gian cấp tốc. Vì vậy, tất cả các yêu cầu sẽ được kiểm tra đối với các miền trong danh sách trắng

Tạo một tệp có tên

const express = require("express");

const morgan = require("morgan");

app.get("/ping", (req, res) => {

console.log("Server started listening on port : ", PORT);

5 bên trong thư mục phần mềm trung gian

module.exports = (req, res, next) => {

let isDomainAllowed = allowedOrigins.indexOf(req.hostname) !== -1;

return res.status(403).json({

message: "Access Restricted"

Lưu tệp, nhập tệp trong ứng dụng. js và sử dụng nó

Thêm dòng sau vào tệp

npm i express mongoose dotenv uuid mongo-sanitize morgan --save

6

+ app.use(restrictOrigin);

Lưu ứng dụng. tập tin js

Trong dự án này, tên miền được phép là localhost. Thay đổi nó trong khi sử dụng nó trong dự án của bạn

Thật tuyệt💫 Bản soạn sẵn của chúng tôi gần như đã sẵn sàng

Hãy xem cấu trúc dự án của chúng tôi

Cấu trúc thư mục

Đây là cấu trúc của bản soạn sẵn của chúng tôi

Ở đây các thư mục bình luận, bài đăng và bạn bè chỉ được thêm vào chẳng hạn. Nó sẽ thay đổi tùy theo yêu cầu của dự án

Logic cốt lõi của ứng dụng của bạn phải được triển khai bên trong thư mục src. Tạo thư mục bên trong thư mục src dựa trên các tính năng. Bạn có thể tạo nhiều thư mục con như helpers, models, v.v. , bên trong mỗi thư mục tính năng

Tất cả các điểm cuối sẽ được xác định bên trong thư mục tuyến đường. Logic sẽ được xử lý bởi các tập tin điều khiển. Bạn có thể xác định các tùy chọn cấu hình cơ bản trong phần cấu hình. tập tin js

Các chức năng khác có thể được xác định trong thư mục misc

Bạn có thể sử dụng mẫu này để xây dựng dịch vụ xác thực người dùng an toàn như thế này

Phần kết luận

Vâng, như đã đề cập ở trên, đây là một mẫu bắt đầu rất cơ bản nhưng nó sẽ rất hữu ích khi chúng ta quen với nó. Hãy tin tôi, bằng cách tạo bản soạn sẵn của riêng mình, chúng ta có thể tiết kiệm rất nhiều thời gian và năng lượng khi bắt đầu thực hiện mọi dự án mới. Hãy cho tôi biết nếu bạn có bất cứ điều gì để thảo luận với tôi. tôi sẽ rất vui khi được nghe

boilerplate nghĩa là gì?

Bản soạn sẵn là gì? . standardized text, copy, documents, methods, or procedures that may be used over again without making major changes to the original.

Mã soạn sẵn được sử dụng để làm gì?

Trong lập trình máy tính, mã soạn sẵn hay đơn giản là soạn sẵn, là các đoạn mã được lặp lại ở nhiều nơi với ít hoặc không có biến thể . Khi sử dụng các ngôn ngữ được coi là dài dòng, lập trình viên phải viết rất nhiều mã soạn sẵn để chỉ thực hiện chức năng nhỏ.

Làm cách nào để tạo mã soạn sẵn cho nút js?

Tạo bản soạn sẵn NodeJS với Typescript .
Bước 1. Tạo một dự án mới. Đầu tiên, tạo một thư mục mới cho dự án của bạn. .
Bước 2. Khởi tạo một dự án npm. .
Bước 3. Tạo một mục nhập cho dự án của chúng tôi. .
Bước 4. Hãy giới thiệu Typescript. .
Bước 5. Hãy biên dịch. .
Bước 6. Thực thi một tệp TypeScript trực tiếp. .
Bước 7. chế độ phát triển

Ví dụ mã soạn sẵn là gì?

Ví dụ: Getter/Setter trong lớp mô hình JavaBean là mã soạn sẵn. Chúng tôi có thể giảm mã soạn sẵn như vậy bằng cách sử dụng chú thích @Getter/@Setter của Lombok. Mã gốc. lớp công khai Người dùng { private Long id;. công khai Long getId() { return id; . id = id; . }