使用 Node.js、Express 和 React 構建強大的 API

了解如何使用 Node.js、Express 和 React 創建一個強大且動態的 API。這個綜合指南將引導你從設置開發環境開始,到集成 React 前端,并利用 APIPost 進行高效的 API 測試。無論你是初學者還是經驗豐富的開發者,這篇文章都適合你。

今天,我們將深入探索 Node.js、Express 和 React 的精彩世界。無論你是經驗豐富的程序員還是剛入門的開發者,本博客將引導你使用這些流行的技術構建一個強大的 API。我們將從基礎開始,逐步設置開發環境,了解這些工具是如何協同工作的。此外,我們還將展示如何利用 APIPost 讓你的工作更加輕松。所以,拿起你最愛的編程小零食,跟著我們一起開始吧!

為什么選擇 Node.js、Express 和 React?

在開始編寫代碼之前,讓我們先討論一下為什么這些技術值得你關注。

Node.js

Node.js 是一個讓你在服務器端運行 JavaScript 的運行時環境。它基于 Chrome 的 V8 JavaScript 引擎,具有高效快速的特點。使用 Node.js,你可以構建可擴展的網絡應用程序,處理多個請求,同時使用單一的編程語言(JavaScript)進行客戶端和服務器端開發。

image.png

Express

Express 是一個輕量級且靈活的 Node.js Web 應用框架。它為構建 Web 和移動應用程序提供了一套強大的功能。使用 Express,你可以輕松地設置服務器、管理路由并處理 HTTP 請求和響應。它是許多 Node.js 應用程序的核心,與 React 配合使用時效果尤為出色。

image.png

React

React 是一個用于構建用戶界面的 JavaScript 庫,由 Facebook 和一個社區維護。React 允許你創建可重用的 UI 組件,并高效地管理應用程序的狀態。與 Node.js 和 Express 配合使用時,你可以輕松構建動態、響應式的 Web 應用程序。

image.png

設置開發環境

讓我們開始設置開發環境,以下是逐步指南:

  1. 安裝 Node.js:前往?Node.js 官網?下載最新版本,并根據操作系統的要求進行安裝。

  2. 安裝 npm:npm(Node 包管理器)是與 Node.js 一起安裝的。你可以通過在終端中運行?npm -v?來檢查它是否已經安裝。

  3. 創建新項目:為你的項目創建一個新目錄,并在終端中進入該目錄。運行?npm init?初始化一個新的 Node.js 項目,按照提示創建一個?package.json?文件。

  4. 安裝 Express:運行?npm install express?安裝 Express。

  5. 安裝 React:使用 Create React App 來設置一個新的 React 項目。運行?npx create-react-app client?在?client?目錄中創建一個新的 React 應用。

  6. 安裝 APIPost:為了簡化 API 開發和測試,我們將使用 APIPost。你可以從?APIPost 官網?免費下載并進行集成。

使用 Node.js 和 Express 構建 API

環境設置好之后,讓我們用 Node.js 和 Express 構建一個簡單的 API。

第一步:設置 Express 服務器

在項目的根目錄中創建一個名為?server.js?的文件,并添加以下代碼來設置一個基礎的 Express 服務器:

const express = require('express');
const app = express();
const port = 3000;app.get('/', (req, res) => {res.send('Hello World!');
});app.listen(port, () => {console.log(`Server running at http://localhost:${port}`);
});

在終端中運行?node server.js。你應該看到 "Server running at?http://localhost:3000"。然后打開瀏覽器并訪問?http://localhost:3000,你會看到 "Hello World!"。

第二步:創建 API 路由

接下來,我們來創建一些 API 路由。在?server.js?文件中,添加以下代碼來創建一個返回書籍列表的簡單 API:

const books = [{ id: 1, title: '1984', author: 'George Orwell' },{ id: 2, title: 'To Kill a Mockingbird', author: 'Harper Lee' },{ id: 3, title: 'The Great Gatsby', author: 'F. Scott Fitzgerald' }
];app.get('/api/books', (req, res) => {res.json(books);
});

現在,當你訪問?http://localhost:3000/api/books?時,會看到一個包含書籍列表的 JSON 響應。

第三步:連接數據庫

為了使我們的 API 更加動態,我們將連接一個數據庫。在本示例中,我們使用 MongoDB。首先,通過運行?npm install mongoose?安裝 Mongoose。

創建一個名為?db.js?的新文件,并添加以下代碼以連接到 MongoDB:

const mongoose = require('mongoose');mongoose.connect('mongodb://localhost:27017/library', {useNewUrlParser: true,useUnifiedTopology: true
});const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', () => {console.log('Connected to MongoDB');
});module.exports = db;

在?server.js?文件中,引入?db.js?文件以連接數據庫:

const db = require('./db');

接下來,我們創建一個 Mongoose 模型來存儲書籍。創建一個名為?book.js?的新文件,并添加以下代碼:

const mongoose = require('mongoose');const bookSchema = new mongoose.Schema({title: String,author: String,
});const Book = mongoose.model('Book', bookSchema);module.exports = Book;

在?server.js?文件中,更新?/api/books?路由以從數據庫中獲取書籍:

const Book = require('./book');app.get('/api/books', async (req, res) => {const books = await Book.find();res.json(books);
});

現在,你可以在 MongoDB 數據庫中添加、更新和刪除書籍,并且 API 將動態反映這些更改。

將 React 與 Node.js 和 Express 集成

現在我們已經設置好了 API,讓我們將其與 React 前端集成。

第一步:設置代理

為了讓 React 前端向 API 發出請求,我們需要設置代理。打開?client/package.json?文件,添加以下內容:

"proxy": "http://localhost:3000"

第二步:從 API 獲取數據

在你的 React 應用中,讓我們創建一個組件來從 API 獲取數據并顯示它。打開?client/src/App.js?文件,并將其內容替換為以下代碼:

import React, { useEffect, useState } from 'react';
import './App.css';function App() {const [books, setBooks] = useState([]);useEffect(() => {fetch('/api/books').then(response => response.json()).then(data => setBooks(data));}, []);return (<div className="App"><h1>Books</h1><ul>{books.map(book => (<li key={book.id}>{book.title} by {book.author}</li>))}</ul></div>);
}export default App;

在?client?目錄中運行?npm start?啟動 React 開發服務器,你應該能看到從 API 獲取到的書籍列表顯示在頁面上。

使用 APIPost 進行高效的 API 測試

API 開發離不開適當的測試。APIPost 通過其用戶友好的界面和強大的功能簡化了測試過程。通過使用 APIPost,你可以快速測試你的端點、驗證響應并自動化測試過程。訪問?APIPost 官網?下載并將其集成到你的 API 開發工作流中,享受更加流暢高效的體驗。

1. 設置 APIPost 📋

利用 APIPost 測試和比較優化前后的網頁加載時間,幫助你有效識別性能改進。

curl -w "@curl-format.txt" -o /dev/null -s "https://apipost.example.com/page"

2. 分析響應時間 📉

在優化前后,測量并記錄響應時間,以量化性能提升。這一步可以突出優化如何改善加載速度。

3. 使用 CI/CD 自動化測試 ??

將 APIPost 集成到你的持續集成/持續部署(CI/CD)管道中,持續監控頁面加載性能,快速識別回歸問題。確保在所有更新中,性能始終保持最佳。

示例?curl-format.txt:

apipost run "https://open.apipost.cn/open/ci/automated_testing?ci_id=MjE4MDIzMzg1MTk5MTY1NDQwOjEwMjUzNjYzNTA2NjIwNDE5OjEzMTI1Nzk3MzQyMzcxODk5&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoyMTgwMjMzODUxMTUyNzkzNjAsImlzcyI6ImFwaXBvc3QiLCJleHAiOjE3MjYyOTI2MzJ9.429eP2JlEApWAWCCK6zqy3HoKYHPNRq7LK95xde-Tro" -r html

通過將 APIPost 納入你的工具鏈,你可以確保網頁始終具有卓越的性能,為用戶提供流暢高效的體驗。

結論

恭喜!你已經成功使用 Node.js、Express 和 React 構建了一個強大的 API。你學會了如何設置開發環境、創建 API 路由、連接數據庫以及將 React 集成到后端中。同時,你也了解了如何利用 APIPost 簡化 API 測試。

記住,這只是一個開始。你可以通過添加身份驗證、實現更復雜的路由和增強前端功能來擴展和優化你的應用。祝編程愉快!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77066.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77066.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77066.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

智慧聲防:構筑海濱浴場安全屏障的應急廣播系

海濱浴場是夏季旅游的熱門目的地&#xff0c;但潮汐變化、離岸流、突發天氣、溺水事故等安全隱患時刻威脅著游客安全。傳統的安全管理依賴人工瞭望和喊話&#xff0c;存在覆蓋范圍有限、響應速度慢等問題。“智慧聲防”應急廣播系統&#xff0c;通過智能化、網絡化、多場景協同…

Redis之緩存穿透

Redis之緩存穿透 文章目錄 Redis之緩存穿透一、什么是緩存穿透&#xff1f;二、緩存穿透常見的解決方案1. 緩存空對象&#xff08;Null Caching&#xff09;2. 布隆過濾器&#xff08;Bloom Filter&#xff09;?3. 互斥鎖&#xff08;Mutex Lock&#xff09;?4. 接口層校驗5.…

【藍橋杯】顏色平衡樹

思路 顏色平衡樹&#xff0c;即子樹中的節點顏色均勻分布。所以要確認一個子樹是否為顏色平衡樹&#xff0c;需要得到它的所有節點的顏色&#xff0c;也就是要深搜它所有的子樹。 這個想法就很標準的啟發式合并了&#xff0c;何為啟發式合并&#xff1f;簡單來說&#xff0c;…

自動化測試工具playwright中文文檔-------14.Chrome 插件

介紹 注意 插件僅在以持久化上下文啟動的 Chrome/Chromium 瀏覽器中工作。請謹慎使用自定義瀏覽器參數&#xff0c;因為其中一些可能會破壞 Playwright 的功能。 以下是獲取位于 ./my-extension 的 Manifest v2 插件背景頁面句柄的代碼示例。 from playwright.sync_api imp…

讓 Python 腳本在后臺持續運行:架構級解決方案與工業級實踐指南

讓 Python 腳本在后臺持續運行&#xff1a;架構級解決方案與工業級實踐指南 一、生產環境需求全景分析 1.1 后臺進程的工業級要求矩陣 維度開發環境要求生產環境要求容災要求可靠性單點運行集群部署跨機房容災可觀測性控制臺輸出集中式日志分布式追蹤資源管理無限制CPU/Memo…

MyBatis 詳解

1. 什么是 MyBatis&#xff1f; MyBatis 是一款優秀的 持久層框架&#xff0c;它通過 XML 或注解配置&#xff0c;將 Java 對象&#xff08;POJO&#xff09;與數據庫操作&#xff08;SQL&#xff09;進行靈活映射&#xff0c;簡化了 JDBC 的復雜操作。 核心思想&#xff1a;S…

循環神經網絡 - 深層循環神經網絡

如果將深度定義為網絡中信息傳遞路徑長度的話&#xff0c;循環神經網絡可以看作既“深”又“淺”的網絡。 一方面來說&#xff0c;如果我們把循環網絡按時間展開&#xff0c;長時間間隔的狀態之間的路徑很長&#xff0c;循環網絡可以看作一個非常深的網絡。 從另一方面來 說&…

GoLand 標紅但程序可正常運行:由符號索引緩存失效引起的假報錯問題

問題描述&#xff1a; 在 GoLand 中&#xff0c;api/tls.go 文件中引用了 api/type.go 中定義的結構體 Options&#xff0c;但 GoLand 把 Options 標紅顯示為未定義&#xff08;undefined symbol&#xff09;&#xff0c;盡管程序實際可以正常編譯和運行&#xff08;go build /…

python-各種文件(txt,xls,csv,sql,二進制文件)讀寫操作、文件類型轉換、數據分析代碼講解

1.文件txt讀寫標準用法 1.1寫入文件 要讀取文件&#xff0c;首先得使用 open() 函數打開文件。 file open(file_path, moder, encodingNone) file_path&#xff1a;文件的路徑&#xff0c;可以是絕對路徑或者相對路徑。mode&#xff1a;文件打開模式&#xff0c;r 代表以…

Uniapp:確認框

目錄 一、 出現場景二、 效果展示三、具體使用 一、 出現場景 在項目的開發中&#xff0c;會經常出現刪除數據的情況&#xff0c;如果直接刪除的話&#xff0c;可能會存在誤刪&#xff0c;用戶體驗不好&#xff0c;所以需要增加一個消息提示&#xff0c;提醒用戶是否刪除。 二…

解密 Vue 打包策略

1. 總體概述 在現代前端開發中&#xff0c;Vue 已成為流行框架之一&#xff0c;開發者通常使用 webpack、vite 或 vue-cli 來構建項目。可能會困惑&#xff1a; 為什么源碼中的資源引用路徑與打包后實際產出的路徑會不一樣&#xff1f;靜態路徑與動態路徑到底如何正確書寫&am…

Golang|接口并發測試和壓力測試

文章目錄 這里出現某些獎品和數據庫中庫存量不一致的問題原因就是在并發的情況下&#xff0c;sync.Map仍然會出現臟寫問題&#xff0c;就是在同時操作下的操作覆蓋問題可以先把數據放到channel里&#xff0c;然后用一個單一的協程負責讀取channel并寫入map

CentOS下,Xftp中文文件名亂碼的處理方式

亂碼原因 中文版Windows默認使用GBK編碼&#xff0c;現代Linux發行版&#xff08;如CentOS、Ubuntu等&#xff09;默認使用UTF-8編碼。Windows下正常的編碼&#xff0c;可能在linux下無法識別&#xff0c;例如&#xff1a;Windows的GBK字節0xD6D0被Linux用UTF-8解碼時&#xf…

解決 Vue 中 input 輸入框被賦值后,無法再修改和編輯的問題

目錄 需求&#xff1a; 出現 BUG&#xff1a; Bug 代碼復現 解決問題&#xff1a; 解決方法1&#xff1a; 解決方法2 關于 $set() 的補充&#xff1a; 需求&#xff1a; 前段時間&#xff0c;接到了一個需求&#xff1a;在選擇框中選中某個下拉菜單時&#xff0c;對應的…

【含文檔+PPT+源碼】基于微信小程序的衛生院預約掛號管理系統的設計與實現

項目視頻介紹&#xff1a; 畢業作品基于微信小程序的衛生院預約掛號管理系統的設計與實現 課程簡介&#xff1a; 本課程演示的是一款基于微信小程序的衛生院預約掛號管理系統的設計與實現&#xff0c;主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習…

【Vue】案例——To do list:

【Vue】案例——To do list&#xff1a; 一、案例介紹&#xff1a;二、效果展示&#xff08;如圖&#xff09;三、主要功能&#xff1a;四、技術要點&#xff1a;補充&#xff1a;【Vue】Vue模板語法(點擊可跳轉)補充&#xff1a;【Vue】數據綁定&#xff08;單雙向&#xff09…

導入 .sql 文件到 云服務器上的MySQL中

導入 .sql 文件到 云服務器上的MySQL中 步驟 1&#xff1a;確保 .sql 文件已上傳到云服務器步驟 2&#xff1a;登錄到云服務器步驟 3&#xff1a;檢查文件是否成功傳輸步驟 4&#xff1a;登錄 MySQL步驟 5&#xff1a;創建空數據庫&#xff08;如果尚未創建&#xff09;步驟 6&…

我的機器學習之路(初稿)

文章目錄 一、機器學習定義二、核心三要素三、算法類型詳解1. 監督學習&#xff08;帶標簽數據&#xff09;2. 無監督學習&#xff08;無標簽數據&#xff09;3. 強化學習&#xff08;決策優化&#xff09;(我之后主攻的方向) 四、典型應用場景五、學習路線圖六、常見誤區警示七…

VueDOMPurifyHTML 防止 ??XSS(跨站腳本攻擊)?? 風險

VueDOMPurifyHTML 是一個 ??Vue.js 插件??&#xff0c;用于在 v-html 指令中安全地渲染 HTML 內容&#xff0c;防止 ??XSS&#xff08;跨站腳本攻擊&#xff09;?? 風險。 ??作用?? ??解決 v-html 的安全問題?? Vue 的 v-html 會直接渲染原始 HTML&#xff0…

【數據結構】之散列

一、定義與基本術語 &#xff08;一&#xff09;、定義 散列&#xff08;Hash&#xff09;是一種將鍵&#xff08;key&#xff09;通過散列函數映射到一個固定大小的數組中的技術&#xff0c;因為鍵值對的映射關系&#xff0c;散列表可以實現快速的插入、刪除和查找操作。在這…