我正在构建一个简单的基于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?任何指向代码示例的指针都将非常感激。
答案 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);
});
您将要添加一些错误处理以使事情更加健壮,否则如果路由参数无效,您的应用程序将崩溃。