简单教程:如何为初学者创建快速API
#初学者 #node #api #express

介绍

Express是一个简约的node.js框架。使用Express的关键好处之一是它可以轻松创建强大而可扩展的API。在本文中,我想指导您如何使用这种出色的技术创建API。

项目初始化

确保您的计算机上安装了Node.js。然后,我们可以继续进行项目初始化。为此,我们需要运行以下命令:

mkdir my-api        # Create directory for our project
cd my-api           # Navigate to the created directory
npm init -y         # Initialize new project
npm install express # Install dependencies
touch server.js     # Create main file

现在,让我们打开您的首选代码编辑器,并通过更改scripts部分来修改package.json文件:

"scripts": {
  "dev": "node --watch server.js",
  "start": "node server.js"
}

在这里,我们为我们的项目定义了两个脚本:devstart,均负责运行我们的代码。但是,dev支持手表模式,这意味着它将在每个代码上重新运行。我们将仅将dev用于开发目的。

代码

作为一个例子,我们将为待办事项列表应用程序创建一个简单的API。在您首选的代码编辑器中,打开server.js文件并粘贴以下代码:

const express = require("express");

const port = 8080;
const app = express();
app.use(express.json());

const todos = [
  { id: 1, title: "Go grocery shopping 🛒", completed: true },
  { id: 2, title: "Do the laundry 🧺", completed: false },
];

app.listen(port, () => {
  console.log(`[server]: listening on port ${port}`);
});

在上面的代码中,我们在port 8080上初始化了Express Server。我们使用express.json()中间件在请求主体中启用JSON内容,并定义了我们的待办事项的存储。为了简单起见,我使用了常规的JavaScript变量,但请记住,对于准备生产的应用程序,您应始终使用稳定的数据库解决方案,例如MySQL或PostgreSQL。

提取数据

要从我们的API获取数据,我们将定义第一个终点,我们将使用GET方法对其进行定义。请粘贴以下代码到server.js文件:

app.get("/api/todos", (req, res) => {
  res.status(200).json(todos);
});

在这里,我们定义了第一个端点-/api/todos。我们将响应状态设置为200,假设它是成功的,并以JSON响应的形式序列化的待办事项。

要测试我们的代码,运行npm run dev命令并导航到http://localhost:8080/api/todos查看结果。

插入数据

要使用我们的API插入数据,我们将对/api/todos端点使用POST方法。代码如下:

app.post("/api/todos", (req, res) => {
  if (!req.body.title) {
    res.status(400).json({ message: "Title is required" });
    return;
  }

  const title = String(req.body.title).trim();
  if (title.length < 3) {
    res.status(400).json({ message: "Title must be at least 3 characters" });
    return;
  }

  const newItem = {
    id: todos.length + 1,
    title,
    completed: false,
  };

  todos.push(newItem);
  res.status(201).json(newItem);
});

首先,我们进行了一些基本验证 - 我们检查了title是否存在于请求正文中,如果不是或少于3个字符,则我们将响应状态设置为400,这意味着请求是无效,我们返回适当的消息。

注意验证失败后如何使用return。需要在当前端点中防止任何进一步的代码执行。

如果验证成功,那么我们将继续创建一个新的待办事项项目并将其推入我们的“数据库”。然后,我们将响应状态设置为201,这意味着我们创建了一个新项目,然后将其返回。

不幸的是,要测试此代码,浏览器还不够。您需要使用诸如PostmanThunder Client之类的工具,如果使用VSCODE编辑器。

Screenshot from a Thunder Client tool showing successful POST request

删除数据

最后一步将是为/api/todos端点定义DELETE方法。我们将使用它从“数据库”中删除现有项目。

app.delete("/api/todos/:id", (req, res) => {
  const id = Number(req.params.id);

  const itemIndex = todos.findIndex((todo) => todo.id === id);
  if (itemIndex === -1) {
    res.status(404).json({ message: `Item with id ${id} not found.` });
    return;
  }

  const removedItem = { ...todos[itemIndex] };

  todos.splice(itemIndex, 1);
  res.status(200).json(removedItem);
});

为了定义要删除的项目,我们使用了route parameter(端点中的/:id部分)。我们可以使用req.params对象访问它。因此,在这里,我们检查了一个带有提供的id的项目,甚至不存在,如果不存在,我们将响应状态设置为404并返回适当的消息。如果存在,我们只需将其从存储中删除并返回删除的项目。

Screenshot from a Thunder Client tool showing successful DELETE request


就是本文。您可以在下面的存储库中找到完整的代码:

我希望您喜欢它,今天学到了一些新东西。如果您有任何疑问,请随时将它们留在下面的评论部分中,或在我的Twitter上与我联系。

感谢您的阅读! ð