2017-03-02 119 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