javascript - 如何正确路由到 Express 中的 JSON 条目

标签 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?任何指向代码示例的指针将不胜感激。

最佳答案

仅使用路由参数即可轻松完成。

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

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

关于javascript - 如何正确路由到 Express 中的 JSON 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31390654/

相关文章:

javascript - 如何从 Internet Explorer 中的剪贴板获取 base64 编码图像?

sql - json在sql中提取多级值

objective-c - iOS 从服务器获取数据

json - 是否可以使用 Eclipse 自动完成 JSON 模式和文档?

express - 在Electron主线程中使用 'express',找不到模块

javascript - 为什么我不断收到 TypeError : User is not a constructor?

node.js - 为什么 Axios 在 Express 中返回 "bound consoleCall"?

javascript - Jquery slider 向下移动如何使其水平移动

javascript - Ajax 中的 URL open()

javascript - 国际电话输入更改下拉列表拨号代码从另一个下拉列表