如何在Express中正确路由到JSON条目

时间:2015-07-13 18:21:25

标签: javascript json express

我正在构建一个简单的基于Express的API来提供JSON数据文件。它工作正常,但我想添加功能。 JSON文件具有以下格式:(省略部分)

[{
  "ID": "1",
  "NAME": "George Washington",
  "PAGE": "http://en.wikipedia.org/wiki/George_Washington",
  "DATE1": "30/04/1789",
  "DATE2": "4/03/1797",
  "PARTY": "Independent ",
  "IMG": "GeorgeWashington.jpg",
  "THUMB": "thmb_GeorgeWashington.jpg",
  "HOMESTATE": "Virginia"
}

这是我的 index.js 中用于快速路由的代码段:

var express = require('express');
var app = express();

app.set('port', process.env.PORT || 3000);

var myData = require('./data.json');

app.get('/api', function(req, res){
res.json(myData);
});

app.get('/api/:id', function(req, res){
  res.json(myData[req.params.id]);
  });

/ api 的调用会给出整个数据集,而对 / api / 1 的调用只会给出第一个条目,正如我所希望的那样。我想要做的是添加第三个(或更多路径),允许用户深入查看JSON中的特定项目。例如,调用

https//<blah>/api/1/HOMESTATE

会产生

"HOMESTATE": "Virginia"

我可以使用参数执行此操作,还是需要根据输入的ID迭代JSON?任何指向代码示例的指针都将非常感激。

1 个答案:

答案 0 :(得分:1)

只需使用路线参数即可轻松完成。

app.get('/api/:id/:property', function(req, res){
  var response = {};
  response[req.params.property] = myData[req.params.id][req.params.property]
  res.json(response);
});

您将要添加一些错误处理以使事情更加健壮,否则如果路由参数无效,您的应用程序将崩溃。

相关问题