【问题标题】:Communication with an http-server与 http-server 通信
【发布时间】:2017-03-02 13:04:02
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 你需要一个数据库(也许一些noSQL包可以,我不够熟悉,无法提供具体细节)
  • 你的httpserver有接受post请求并写入文件的功能吗?如果没有,您必须在实际接受 POST 之前编写它,否则服务器不知道如何处理它。
  • @Alex 我可以在没有数据库的情况下完成吗?只是发送一个字符串并将其存储在一个文件中?
  • @Shilly 我把这段代码放在哪里?编辑 http-server 模块的 node_modules 中的代码?
  • 但是为了记录,http-server 通常只用于提供静态文件。使用默认的 http 模块并写 20 行来接受 post 请求可能会更容易。

标签: javascript node.js web httpserver


【解决方案1】:

您将无法单独使用 http-server 执行此操作,因为 http-server 只能提供静态内容,不能用于在服务器端运行任何代码。

您必须自己编写一个后端,可能使用 Express、Hapi、Restify、Loopback 等框架,并使用新后端提供您需要的静态文件,或者像现在一样保留它,但随后您如果您为数据保存/检索端点和静态内容使用不同的端口,则可能需要考虑 CORS - 除非您运行反向代理,使其全部显示在相同的主机名和端口上。

您可以使用文件系统来保存数据,也可以使用数据库 - 独立数据库(如 Mongo 或 Postgres)或嵌入式数据库(如 SQLite 或 Loki)。

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

【讨论】:

    【解决方案2】:

    你应该使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-30
      • 2017-12-17
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多