JSON 服务器

2025年3月17日 | 阅读 7 分钟

大多数开发人员都听说过术语 JSON。 它代表 "JavaScript 对象表示法"。 JSON 只是一个开放标准的文件格式和数据交换格式。 它使用人类可读的文本来存储和传输数据对象。 它通常由两个人类可读的属性组成,即键值对数组。 JSON 是一种非常常见的数据格式,具有不同的应用。 例如,与服务器通信的 Web 应用程序使用 JSON。

在类似的意义上,JSON Server 也没什么不同。 JSON Server 是一个 Node 模块,您可以使用它在短短几分钟内创建演示REST JSON服务。 我们所需要做的就是将 JSON 文件作为示例数据。 让我们更多地了解如何在系统中安装和设置 JSON 服务器,同时我们将尝试创建一个REST API。 让我们更多地了解它。

安装

要开始安装 JSON 服务器,我们所需要做的就是打开系统的终端并键入以下命令。

下一步涉及使用 JSON 创建数据库。 为了便于学习,我们创建了一个示例文本数据库,如下所示。

我们快完成了。 下一步是启动 JSON Server,为此使用以下命令。

现在,如果我们转到 https://:3000/posts/1,我们将得到类似这样的结果。

此输出表明我们的 JSON 服务器适用于上述属性,并且其中包含一些值。 我们现在可以轻松地为 JSON Server 创建一个请求。 但是,在继续之前,最好考虑一些关键因素。 这些关键因素是

1. 如果我们发出诸如 POST、DELETE、PUTPATCH 之类的请求,则更改将直接反映并安全地存储在 db.json 文件中。

2. 请求的 JSON 正文应被封闭在对象中,就像 GET一样。 例如

3. ID 值通常不可变。 默认情况下,PUT 和 PATCH 请求正文中存在的 ID 的任何值通常都会被忽略。 只有在未被使用的情况下,才会考虑在 POST 请求中设置的值。

4. PATCH、POST 和 PUT 请求应始终包含一个 Content-Type: application/json 标头,以便在 JSON 请求正文中使用。 否则,它将返回 2XX 状态代码,而不会更新对数据所做的更改。

路由

路由只不过是处理请求在管道中的途径。 特定路由服务于特定请求,因此不会干扰依赖项。

因此,根据之前的 db.json 文件,可以使用终端上的命令 --routes 添加各种默认路由。 下面显示了一些默认路由。

单数路由

复数路由

创建 REST API

表述性状态转移 (REST) 是一种软件架构风格,它使用 HTTP 的一个子集。 它通常用于创建基于 Web 提供的可用服务的交互式应用程序。 所有遵循这些 Web 服务准则的应用程序因此被称为 RESTful

现在让我们创建一个名为 db.json 的新 JSON 文件。 此文件将包含应该由 REST API 公布的示例数据。 对于 JSON 结构中包含的所有对象,将自动创建 CRUD (创建读取更新删除) 端点。 让我们看看示例 db.json 文件。

上面的示例 db.json 结构由一个包含 3 个指定数据集的对象员工组成。 每个员工对象由四个属性组成,例如 id, first_name, last_name,email

在此步骤之后,我们所需要做的就是通过终端命令运行服务器。

下一步是在包含 JSON 结构的文件中传递一个参数。 此外,我们正在使用 watch 参数,因为它确保服务器正在以 watch 模式启动,并且更改和更新会相应地暴露给 API。 在我们启动服务器后,会显示以下控制台输出。

JSON Server

现在,如果我们在浏览器环境中运行 URL https://:3000/employees,我们可能会看到以下结果。

JSON Server

从上图中,我们可以看到正确识别了资源员工。 现在,当我们单击员工链接并使用 HTTP GET 请求到 https://:3000/employees 时,它将向我们显示以下 JSON 结果。

此操作将创建之前讨论的各种路由端点,并且在检查时,我们将找到以下结果。

上述端点表明我们现在可以发出 DELETE、PATCH、GET、POST 和 PUT 请求,并且任何更改都肯定会自动保存到 db.json 文件中。 同时,在创建 PATCH、PUT 或 POST 请求时,切勿忘记包含 Content-Type: application/json 标头,因为 JSON 将在请求的正文中寻找内容。 否则,它可能会导致 200 OK 而不对数据进行更改。

此外,还有另一个实例,通过使用以下一组参数使用 https://:3000/employees?first_name=Sebastian 修改现有 URL,从而使用更多参数扩展我们的 URL 来过滤参数。 在相似的意义上,也可以轻松地过滤其他请求,这些请求将自动反映并保存到 db.json 文件中。 这就是我们如何成功创建 RESTful API 的方式。 我们可以使用各种工具(例如 Netlify、HerokuPostman)轻松测试和部署它。 让我们学习一些可以使用我们创建的临时 API 执行的额外操作。

额外选项

静态文件服务器

我们创建的 JSON 服务器可用于服务我们的 HTML。 CSS 和 JS 兼容性,但只需创建一个 ./public 目录或使用命令 --static,以便设置不同的静态文件目录。

端口切换/备用端口

可以通过以下命令将通过 localhost 的请求处理转移或切换到另一个端口,以切换到我们现有的 JSON Server。 我们只需要使用 --port number 标志。 例如

中间件模块

如果我们希望对 API 或您想通过与其他 Express 中间件结合创建的项目的任何验证、身份验证或行为更改进行验证,请考虑以下实例。

使用以下方式运行上述文件,

我们在上面的代码片段中为 json.Server.router 函数提供的路径是相对于我们将启动节点进程的目录的。 如果我们从另一个目录运行上面的代码片段,强烈建议使用绝对路径

对于任何其他内存数据库,我们只需要将一个对象传递给现有 Express 项目中的 jsonServer.router() 函数。

JSON Server 的数据模拟

到目前为止,我们已经学会了通过在 JSON 文件中手动创建假 API 来公开数据。 但是,如果我们确实需要大量数据集,则这种手动方法可能会导致忙碌和荒谬。 因此,为了解决这个问题,我们可以使用 Faker.js,因为它能够处理 JSON Server 的大量数据。 它通过与 JSON 和 API 集成时生成假数据来做到这一点。 这可以通过以下步骤完成。

接下来,使用命令安装 Faker.js

Faker.js 将成功安装在 node_modules 文件夹中。 现在,在 employees.js 中创建另一个文件,并插入下面给出的示例 JavaScript 代码。

在上面的代码片段中,我们正在实现函数 generateEmployees() 以生成基于 JSON 的包含 50 名员工数据的对象。 因此,为了获得我们正在使用的名字、姓氏和电子邮件的假数据,我们将使用方法 faker.name.firstName(), faker.name.lastName()faker.internet.email().

此外,JSON Server 需要导出上述代码中的常规 employees() 函数,这是通过使用该方法完成的。

添加了该导出后,我们现在将能够通过以下方式将 employees.js 文件直接传递给 json-server 命令

这项工作已经完成。 我们已成功公开 REST API,该 API 将通过 Faker.js 的方式向我们提供所有 50 个员工数据集的访问权限。

总结

在本教程中,我们从头到尾学习了 JSON Server。 我们试图融入它的用例,并最终学习了它的实现以及设置本地环境、创建请求等。 我们还了解了路由,这非常重要,因为我们可以使用它们来创建数据移到我们的文件中的途径,然后跟踪诸如 POST、DELETE 等请求。 在后面的部分中,我们学习了使用 Express 环境设置中间件,然后使用 Faker.js 模拟 JSON Server。 因此,我们可以得出结论,JSON Server 在开发中涵盖了巨大的应用,因为大多数开发人员都使用这种格式来建立数据操作、访问和存储机制,并执行整体数据驱动范例。


下一主题PHP JSON 示例