gpt4 book ai didi

javascript - 我使用 Node.js 和 Express 实现 Restful API 的正确 url 路径是什么

转载 作者:太空宇宙 更新时间:2023-11-04 03:13:40 24 4
gpt4 key购买 nike

我的 Restful API 中有两条路线,分别是 Node.js 和 Express。

第一条路线是:

http://localhost:8000/?date=2019-10-20&id=4&daysForward=3

并且工作正常!

我尝试查看第二条路线的数据,但看到此错误:

TypeError: Cannot read property 'id2' of undefined

当我输入这个网址时:

http://localhost:8000/stations?id2=1010

代码:

  app.route('/stations')
.get(function (req, res) {
// omitted
res.setHeader('Access-Control-Allow-Origin', '*', 'Cache-Control', 'private, no-cache, no-store, must-revalidate');
const id2 = req.query.id2;
const query2 = `SELECT Station,Ime FROM aladin_surfex.stations_cells WHERE Station=${id2}`;
con.query(query2, function (err, result2, fields) {
if (err)
return res.status(500).json({ error: "Internal server error"})
aladinModelStations = result2;
res.json({ aladinModelStations })
})
});

所以我认为错误在于这一行:

const id2 = req.query2.id2;

当我用查询替换 query2 时:

const id2 = req.query.id2;

我看到空的 aladinModelStations ""没有错误,但我 100% 确定在哪里输入 id2=1010 - 应该有数据。

我不确定如何正确,因为我在第一条 route 有查询,第二条 route 有查询2?

从第二条路径查看 api 上的值的正确路径是什么?

最佳答案

1.

您必须使用req.query :

This property is an object containing a property for each query string parameter in the route. If there is no query string, it is the empty object, {}.

2.

When I replace query2 with query:

const id2 = req.query.id2;  

I see empty aladinModelStations "" without erros,

如果您查看设置 aladinModel 的第一条路线:aladinModel = result,则必须对 aladinModelStations 执行相同的操作:

const aladinModelStations = result2;
res.json({ aladinModelStations })

或者

res.json({ aladinModelStations: result2 })

3.

正如 req.query 的文档和 @sol 的评论所述你永远不应该信任用户输入

As req.query’s shape is based on user-controlled input, all properties and values in this object are untrusted and should be validated before trusting.

你可以escape it使用 connection.escapeId() 例如:

const query2 = `SELECT Station,Ime FROM aladin_surfex.stations_cells WHERE Station=${connection.escapeId(id2)}`;

关于javascript - 我使用 Node.js 和 Express 实现 Restful API 的正确 url 路径是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59542938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com