使用 Restapify 快速轻松地模拟 REST API

2025-06-07

使用 Restapify 快速轻松地模拟 REST API

嘿,开发者们👋

通常,当您开始开发使用 REST API 的新前端项目时,后端尚未准备就绪。然而,很多时候后端只是最基本的,您只想接收伪造的数据来查看应用程序的行为。这时,您决定使用工具来模拟您的 API,例如postman或库,例如json-servermocker-apihttp-fake-backend。这些工具确实很好,但仍然有一些缺点。例如,Postman 并非完全免费使用并且需要登录, mocker-api 在单个 javascript 文件中定义所有路由,而 json-server 在某些时候对边缘情况的限制非常严格。

因此,我决定开发一种新的 API 模拟工具,该工具应该能够处理所有情况,并且具有良好的开发人员体验流程:Restapify

Restapify 是一个基于 Node.js 的 CLI,它允许你使用直观且开发者友好的 JSON 文件结构(类似于 NextJS 或 Sapper 中的内容)快速轻松地部署本地 REST API。让我们通过创建一个简单的模拟 API 来描述它的工作原理,该 API 应该提供以下功能:

GET  /me
GET  /posts
GET  /users
GET  /users/:userid
POST /users/:userid
DEL  /users/:userid
GET  /users/:userid/comments
Enter fullscreen mode Exit fullscreen mode

创建端点

首先创建一个包含路由 json 文件的文件夹,我将其命名为/api。然后我们可以添加一些需要服务的路由。创建路由意味着添加一个.json文件,其文件名描述了端点、方法和状态码,其内容描述了响应主体。因此,要创建GET /me包含状态码的端点,200只需创建以下文件:

📂 api
┣ 📜 me.GET.200.json
Enter fullscreen mode Exit fullscreen mode

由于GET200是方法和状态代码的默认值,因此您可以将文件名简化为:

📂 api
┣ 📜 me.json
Enter fullscreen mode Exit fullscreen mode

响应应包含 a firstname、alastname和 an email,因此的文件内容/api/me.json将类似于:

{
  "firstname": "Janie",
  "lastname": "Hermann",
  "email": "Jo.Kessler@yahoo.com"
}
Enter fullscreen mode Exit fullscreen mode

然后让我们添加 的端点/users。由于端点数量较多,我们可以将它们分组到同一个文件夹中users

📂 api
┣ 📂 users
┃ ┗ 📜 _.json
┃ ┣ 📂 [userid]
┃ ┃ ┗ 📜 _.json
┃ ┃ ┗ 📜 _.POST.201.json
┃ ┃ ┗ 📜 _.DELETE.201.json
┣ 📜 me.json
Enter fullscreen mode Exit fullscreen mode

该文件夹[userid]表明此路由是动态的。然后,您可以在 JSON 文件内容中使用语法来使用此变量[userid]。文件中的示例/api/users/[userid]/_.json

{
  "id": "[userid]",
  "email": "Jo.Kessler@yahoo.com"
}
Enter fullscreen mode Exit fullscreen mode

如果您拨打电话,GET /users/42您将得到回复:

{
  "id": "42",
  "email": "Jo.Kessler@yahoo.com"
}
Enter fullscreen mode Exit fullscreen mode

在这里,要将 转换为数字,只需使用类似 的id语法对变量进行转换即可变量转换文档n:[var]"id": "n:[userid]"

Restapify 提供了一种语法,可以使用著名的fakerjs库轻松填充响应主体(请查看文档):

{
  "firstname": "[#faker:name:firstName]",
  "lastname": "[#faker:name:lastName]",
  "email": "[#faker:internet:email]"
}
Enter fullscreen mode Exit fullscreen mode

您还可以使用for 循环语法轻松创建大量数据。因此,如果您希望通过请求获取 10 条评论,GET /users/:userid/comments只需在 JSON 文件中写入以下内容/api/users/[userid]/comments.json

[
  "#for i in range(10)",
  {
    "id": "n:[i]",
    "creatorId": "n:[userid]",
    "content": "[#faker:lorem:sentences]"
  },
  "#endfor"
]
Enter fullscreen mode Exit fullscreen mode

现在,我们已经创建了所有发送成功响应的 API 端点。但是,如果我们想测试应用程序在用户不存在的情况下的行为,该怎么办呢GET /users/:userid?真实的 API 可能会返回一个没有任何内容的 。为了模拟这种行为,Restapify 实现了端点状态404的概念。为此,您只需为每个不同的状态创建一个新文件,并在文件末尾添加用点分隔的语法。因此,让我们为 创建一个新状态{STATE_NAME}GET /users/:userid

📂 api
┣ 📂 users
┃ ┣ 📂 [userid]
┃ ┃ ┗ 📜 _.json
┃ ┃ ┗ 📜 _.404.{NOT_FOUND}.json
Enter fullscreen mode Exit fullscreen mode

要在 Restapify 中返回无内容,您必须使用此语法作为文件内容:

[null]
Enter fullscreen mode Exit fullscreen mode

空文件会更方便,但根据ECMA-404标准,它对于 JSON 文件无效

现在您已经创建了端点,是时候提供模拟 API 了。为此,请安装 Restapi CLI……

yarn global add restapify 
# or npm install -g restapify
Enter fullscreen mode Exit fullscreen mode

...然后提供api/文件夹:

restapify serve api/
Enter fullscreen mode Exit fullscreen mode

然后它将在您的浏览器中打开一个仪表板,为您提供模拟 API 的概览。

仪表板截图

您可以在此仪表板中查阅端点及其内容,获取它们,更重要的是选择您想要服务的端点状态。

因此,如果您点击状态按钮NOT_FOUND,它将更新 API 以服务于端点的此状态,因此如果您在请求后直接发送,GET /users/42您将收到一个404。这对于测试您的前端(例如登录表单)非常有帮助,您可以根据需要创建多个状态,以满足所有需求和特殊情况。

因此,我介绍了 Restapify 的最重要功能,但我真的鼓励您查看它的官方文档,以更详细地了解其他用例,例如查询字符串for 循环中的路由变量fakerjs 集成。

您可以在https://restapify.vercel.app/examples找到一些模拟 API 的示例,以便您可以直接体验并体验其效果。如果您有任何问题或反馈,请随时在讨论中发布;如果您想查看源代码,请访问以下 GitHub 仓库:

GitHub 徽标 约翰肖邦/ restapify

使用直观且开发人员友好的 JSON 文件结构,快速轻松地部署模拟 REST API

祝你有美好的一天⭐

文章来源:https://dev.to/johannchopin/quickly-and-easily-mock-a-rest-api-with-restapify-16om
PREV
我选择 Angular 的完全主观理由
NEXT
让我们一起创建一个 DEV.to CLI…… 设置 创建 src/api.mjs JavaScript 互操作 读取缓存 解析 HTML 格式化数据 查看文章 从缓存中查看帮助文章 解析文章 阅读文章 显示文章 HTML 转文本 收尾工作 所以你决定直接跳到最后?关于 CLI 的警告 Hacktoberfest 快乐!