2017-03-02 288 views
0

我有一些数据需要在本地存储,并且可以在另一个会话中动态获取,也可以在浏览器关闭并清除所有浏览器数据后进行。与http服务器通信

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

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

我试着做一个ajax post请求,看看控制台中是否发生了一些事情,但它只是返回404,并没有出现在控制台中。

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

PS:我用的HTTP服务器运行这个,这是一个离线项目。

+0

你需要一个数据库(也许一些noSQL包可以做,我不够熟悉,不能提供具体的细节) – Alex

+0

你的httpserver是否有一个函数来接受post请求并写入文件呢?如果不是,那么在实际接受POST之前,您必须先写下它,否则服务器不知道如何处理它。 – Shilly

+0

@Alex我可以在没有数据库的情况下做到吗?只是发送一个字符串并将其存储在一个文件中? – shinzou

回答

4

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

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

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

有关如何服务于自己的后端看到静态内容的例子:

1

你应该使用express用于这种东西。您可以轻松地创建处理某些请求的方法。

这里是如何处理通过只发送一些数据

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