与 http 服务器通信

Communication with an http-server

我有一些数据想存储在本地并能够动态提取,可能在另一个会话中或在浏览器关闭并清除所有浏览器数据后。

我 运行 使用 http-server CLI 命令访问站点并导航到本地主机以从浏览器访问它。

如何将数据发送到服务器端,以便服务器端将数据保存为文件?

我尝试执行 ajax post 请求以查看控制台中是否发生了什么,但它只是返回 404,并且控制台中没有任何内容。

文档没有提及任何关于 post 请求的内容:https://www.npmjs.com/package/http-server

PS:我必须运行这个与http-server,这是一个离线项目。

单独使用 http-server 无法做到这一点,因为 http-server 只能提供静态内容,不能用于 运行 服务器端的任何代码。

您必须自己编写后端,可能使用 Express、Hapi、Restify、Loopback 等框架,并使用新后端提供您需要的静态文件,或者像现在一样保留它,但是那么如果您对数据 saving/retrieving 端点和静态内容使用不同的端口,则可能需要考虑 CORS - 除非您 运行 一个反向代理使它们全部出现在同一主机名上并且港口.

您可以使用文件系统来保存数据,也可以使用数据库 - 可以是像 Mongo 或 Postgres 这样的独立数据库,也可以是像 SQLite 或 Loki 这样的嵌入式数据库。

有关如何在您自己的后端提供静态内容的示例,请参阅:

  • How to serve an image using nodejs

你应该用 express 来处理这种东西。您可以轻松创建处理特定请求的方法。

这是一个关于如何通过仅发送一些数据

来处理 get 请求的示例
var express = require('express')
var app = express()

app.get('/', function (req, res) {
  res.send('Hello World')
})

app.listen(3000)

并且您可以使用节点本身的 fs api 来写入数据。

var fs = require('fs')
fs.writeFile('message.txt', 'Hello Node.js', (err) => {
  if (err) throw err;
  console.log('It\'s saved!');
});

注意:fs 示例使用了箭头函数。您可以找到更多信息 here