Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一个API是否可以处理节点JS中的多个请求?_Javascript_Mysql_Node.js_Api_Router - Fatal编程技术网

Javascript 一个API是否可以处理节点JS中的多个请求?

Javascript 一个API是否可以处理节点JS中的多个请求?,javascript,mysql,node.js,api,router,Javascript,Mysql,Node.js,Api,Router,我的目标是创建一个处理多个请求的API。通过这样做,我需要将一个字符串作为参数传递给API的url,如下所示: // index.js in client fetch(`http://localhost:4000/routerName/${tableName}`).then() // router.js router.get(`/${tableName_from_client_page}`, (req, res) => { // Do Something }) 问题是,除非我为每个匹配

我的目标是创建一个处理多个请求的API。通过这样做,我需要将一个字符串作为
参数
传递给API的
url
,如下所示:

// index.js in client
fetch(`http://localhost:4000/routerName/${tableName}`).then()

// router.js
router.get(`/${tableName_from_client_page}`, (req, res) => { // Do Something })
问题是,除非我为每个匹配的
表名
创建一个全新的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;
//路由器
const express=require('express'),
db=require('./db.js'),
路由器=express.router();
路由器.get('/table',(req,res)=>{
db.loadTable('SELECT*fromsometable',res);
})//仅处理url名称上的一个请求/桌子
router.get('/tables/:tableName',(req,res)=>{
loadTable(`SELECT*FROM${req.params.tableName}',res)
})//根据其参数处理多个请求。
module.exports=路由器;
//路由器
const express=require('express'),
db=require('./db.js'),
路由器=express.router();
路由器.get('/table',(req,res)=>{
db.loadTable('SELECT*fromsometable',res);
})//仅处理url名称上的一个请求/桌子
router.get('/tables/:tableName',(req,res)=>{
loadTable(`SELECT*FROM${req.params.tableName}',res)
})//根据其参数处理多个请求。
module.exports=路由器;
此API将只处理一个请求“/表”

要处理多个请求,请签出下面的代码 但请确保
在路由文件中最后写入此API
,如果您在“/table”API之前写入此API,则您的
“/table”请求也将由此API处理

    router.get('/:table_name', (req, res) => {
      db.loadTable(`SELECT * FROM ${req.params.table_name}`, res)
    }) 
        
    module.exports = router;
此API将只处理一个请求“/表”

要处理多个请求,请签出下面的代码 但请确保
在路由文件中最后写入此API
,如果您在“/table”API之前写入此API,则您的
“/table”请求也将由此API处理

    router.get('/:table_name', (req, res) => {
      db.loadTable(`SELECT * FROM ${req.params.table_name}`, res)
    }) 
        
    module.exports = router;

您需要:
路由路径:/users/:userId/books/:bookId
只是一个友好的提醒:如果此api将公开,请注意SQL注入。您需要:
路由路径:/users/:userId/books/:bookId
只是一个友好的提醒:如果此api将公开,请注意SQL注入。谢谢,但是冒号跟在表名后面是正常的吗?当我记录
req.params.table_name
时,服务器会这样抛出<代码>{table_name:':Customer'}
。我可以通过使用
split()
将其删除,但对我来说仍然有点乏味。是的,如果在路径中写入冒号,express会将其识别为参数。您可以通过
req.params.table_name
使用传递的值。请检查此链接并查找
路线参数
可能您只记录了
req.params
。它将给出所有req.params的对象
req.params.table_name
将只给出您在请求中传递的表名。谢谢,但是在表名之前加冒号是正常的吗?当我记录
req.params.table_name
时,服务器会这样抛出<代码>{table_name:':Customer'}
。我可以通过使用
split()
将其删除,但对我来说仍然有点乏味。是的,如果在路径中写入冒号,express会将其识别为参数。您可以通过
req.params.table_name
使用传递的值。请检查此链接并查找
路线参数
可能您只记录了
req.params
。它将给出所有req.params的对象
req.params.table_name
将只给出您在请求中传递的表名。
    router.get('/:table_name', (req, res) => {
      db.loadTable(`SELECT * FROM ${req.params.table_name}`, res)
    }) 
        
    module.exports = router;