【发布时间】:2020-07-14 17:40:15
【问题描述】:
我的目标是创建一个处理多个请求的 API。通过这样做,我需要将一个字符串作为argument 传递给url of API,如下所示:
// index.js in client
fetch(`http://localhost:4000/routerName/${tableName}`).then()
// router.js
router.get(`/${tableName_from_client_page}`, (req, res) => { // Do Something })
一个问题是,浏览器无法连接到目标页面,除非我为每个匹配的tableNames 创建一个全新的 API。
我希望我的 API 通过接收 tableName 作为其 /url 来处理多个请求。
有什么技巧可以解决这个问题吗?
这就是我的整个路由器的样子:
// Router
const express = require('express'),
db = require('./db.js'),
router = express.Router();
router.get('/table', (req, res) => {
db.loadTable('SELECT * FROM someTable', res);
}) // Handles only one request on the name of url; /table
router.get(`/${tableName_from_client_page}`, (req, res) => {
db.loadTable(`SELECT * FROM ${tableName_from_client_page}`, res)
}) // Handles multiple requests, depending on its argument.
module.exports = router;
【问题讨论】:
-
你需要path parameters:
Route path: /users/:userId/books/:bookId -
友情提醒:如果此 API 公开,请注意 SQL 注入。 stackoverflow.com/questions/332365
标签: javascript mysql node.js api router