express.js到终端

时间:2015-07-17 04:29:23

标签: javascript json node.js rest express

如何使用express.js获取JSON文件?我希望能够在我的Mac终端中访问它。我正在完成一项大学任务,要求我编写一个充当简单数据存储的HTTP服务器。它必须响应GET,PUT,POST和DELETE请求。我必须使用express.js代替fs这个应用程序。

到目前为止,在我的根目录中,我有一个server.js文件,我有一个名为lib的子目录,它包含另一个名为notes的子目录。 Notes是JSON文件所在的位置。

在我的根目录中,我有一个server.js文件。这就是我到目前为止所做的一切:

'use strict'
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var notes = './lib/notes';

app.use(bodyParser.json());

app.get('/', function(req, res) {
  //
  //this is the part I need help with
  //
}

var port = process.env.PORT || 3000;
app.listen(port, function() {
  console.log('Server started on port ' + port;
});

一旦我的GET请求正常工作,我的Mac终端就可以发送GET请求并接收notes目录中的所有JSON文件。

2 个答案:

答案 0 :(得分:7)

  

...从我的Mac终端我应该能够发送GET请求   接收notes目录中的所有JSON文件。

如果你不想使用fs模块(你也不需要),

您只需为GET请求设置路由并发送json文件以响应app.sendFile()

app.get('/',function(req,res){
    res.sendFile(path.normalize(__dirname + '/foo.json'))  
   //assuming your app.js and json file are at same level. 
   //You may change this to 'lib/notes/foo.json' to fit you case
})

pathrequire()所需的模块。

__dirname是当前正在执行的脚本所在的目录。

最后 foo.json 是包含你的json

的文件
{
    "name":"nalin",
    "origin":"stackoverflow"
}

以下是 app.js

的完整代码
var express = require('express');
var path = require('path');
var app  = express();


app.get('/',function(req,res){
    res.sendFile(path.normalize(__dirname + '/foo.json'))
})

app.listen(3000);

这将帮助您使用node app.js运行节点服务器。

最后,您可以通过

访问json
  • 在您的浏览器上访问http://localhost:3000/
  • 在您的mac终端curl
  • 上运行curl localhost:3000命令

希望这有帮助。

答案 1 :(得分:0)

您可以将.json文件作为静态文件提供:

app.use('/notes', express.static( notes ));

http://expressjs.com/starter/static-files.html

或者你可以手动宽度路径模式:

app.get('/notes/:file', function(req, res) {
  fs.readFile(notes + "/" + req.params.file, function(err, data) {
    if(err) {
     res.status(404).send('Not found');
    } else {
      res.contentType(req.params.file);
      res.send(data);
    }   
    res.end();
  }); 
});