使用 Node.js 和 Express 构建 RESTful API 服务器

简介: 【10月更文挑战第3天】使用 Node.js 和 Express 构建 RESTful API 服务器

使用 Node.js 和 Express 构建 RESTful API 服务器

Node.js 是一个基于 Chrome V8 JavaScript 引擎的 JavaScript 运行环境,它允许开发者使用 JavaScript 编写服务器端的应用程序。Express 则是一个基于 Node.js 的 Web 应用框架,它简化了 Web 应用的开发过程。在本文中,我们将构建一个简单的 RESTful API 服务器,该服务器能够处理 CRUD 操作(创建、读取、更新、删除)。

1. 环境准备

首先,确保你的开发环境中已经安装了 Node.js。接下来,我们需要创建一个新的 Node.js 项目。

打开终端或命令提示符,执行以下命令来创建一个新的项目目录:

mkdir express-api-server
cd express-api-server
npm init -y

2. 安装依赖

我们需要安装 express 作为我们的 Web 框架,以及 body-parser 来解析请求体中的 JSON 数据。

npm install express body-parser

3. 创建服务器

接下来,我们将创建一个简单的 HTTP 服务器。在项目根目录下创建一个名为 server.js 的文件,并添加以下代码:

const express = require('express');
const bodyParser = require('body-parser');

// 创建 Express 应用实例
const app = express();

// 使用 body-parser 中间件来解析 JSON 请求体
app.use(bodyParser.json());

// 设置监听端口
const PORT = process.env.PORT || 3000;

// 启动服务器
app.listen(PORT, () => {
   
  console.log(`Server is running on port ${
     PORT}`);
});

4. 设计数据模型

我们将使用一个简单的内存数组来模拟数据库操作。在 server.js 中添加一个模拟数据模型:

let todos = [
  {
    id: 1, title: '学习 Node.js', completed: false },
  {
    id: 2, title: '练习 Express', completed: true },
];

// 用于生成唯一 ID 的辅助函数
function generateId() {
   
  return Math.floor(Math.random() * 100000);
}

5. 实现 RESTful API

接下来,我们将为 CRUD 操作实现对应的 HTTP 路由。

GET 请求

首先,实现一个 GET 请求来获取所有的待办事项:

app.get('/todos', (req, res) => {
   
  res.status(200).json(todos);
});
POST 请求

接着,实现一个 POST 请求来添加新的待办事项:

app.post('/todos', (req, res) => {
   
  const newTodo = {
   
    id: generateId(),
    title: req.body.title,
    completed: false,
  };
  todos.push(newTodo);
  res.status(201).json(newTodo);
});
PUT 请求

实现一个 PUT 请求来更新现有的待办事项:

app.put('/todos/:id', (req, res) => {
   
  const id = parseInt(req.params.id, 10);
  const updatedTodo = req.body;
  const todoIndex = todos.findIndex(todo => todo.id === id);

  if (todoIndex !== -1) {
   
    todos[todoIndex] = {
    ...todos[todoIndex], ...updatedTodo };
    res.status(200).json(todos[todoIndex]);
  } else {
   
    res.status(404).send('Todo not found');
  }
});
DELETE 请求

最后,实现一个 DELETE 请求来删除特定的待办事项:

app.delete('/todos/:id', (req, res) => {
   
  const id = parseInt(req.params.id, 10);
  const todoIndex = todos.findIndex(todo => todo.id === id);

  if (todoIndex !== -1) {
   
    todos.splice(todoIndex, 1);
    res.status(204).send();
  } else {
   
    res.status(404).send('Todo not found');
  }
});

6. 测试 API

启动服务器:

node server.js

现在,你可以使用 Postman 或者 curl 等工具来测试这些 API。

例如,使用 curl 发送一个 POST 请求:

curl -X POST http://localhost:3000/todos -H "Content-Type: application/json" -d '{"title":"学习 Express"}'

7. 总结

通过这篇文章,我们成功地使用 Node.js 和 Express 构建了一个简单的 RESTful API 服务器,它能够处理基本的 CRUD 操作。这个例子展示了如何创建一个 HTTP 服务器,如何接收和发送 JSON 数据,以及如何使用中间件来处理请求体。


相关文章
|
6月前
|
前端开发 JavaScript NoSQL
使用 Node.js、Express 和 React 构建强大的 API
本文详细介绍如何使用 Node.js、Express 和 React 构建强大且动态的 API。从开发环境搭建到集成 React 前端,再到利用 APIPost 高效测试 API,适合各水平开发者。内容涵盖 Node.js 运行时、Express 框架与 React 库的基础知识及协同工作方式,还涉及数据库连接和前后端数据交互。通过实际代码示例,助你快速上手并优化应用性能。
|
7月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
9月前
|
JavaScript 前端开发 安全
盘点原生JS中目前最没用的几个功能API
在JavaScript的发展历程中,许多功能与API曾风光无限,但随着技术进步和语言演化,部分功能逐渐被淘汰或被更高效的替代方案取代。例如,`with`语句使代码作用域复杂、可读性差;`void`操作符功能冗余且影响可读性;`eval`函数存在严重安全风险和性能问题;`unescape`和`escape`函数已被`decodeURIComponent`和`encodeURIComponent`取代;`arguments`对象则被ES6的剩余参数语法替代。这些变化体现了JavaScript不断优化的趋势,开发者应紧跟技术步伐,学习新技能,适应新技术环境。
132 10
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
241 2
|
11月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
162 1
JavaScript中的原型 保姆级文章一文搞懂
|
11月前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
101 0
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
352 5
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的家政平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的家政平台附带文章源码部署视频讲解等
196 4
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
182 4
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物交易平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物交易平台附带文章源码部署视频讲解等
193 4