Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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 将/.json添加到express routes末尾的最佳方式是什么?_Javascript_Node.js_Express - Fatal编程技术网

Javascript 将/.json添加到express routes末尾的最佳方式是什么?

Javascript 将/.json添加到express routes末尾的最佳方式是什么?,javascript,node.js,express,Javascript,Node.js,Express,我正在通过DJANGO API移植到Node.js,并且需要在路由末尾支持.json 示例:GET to/users/:id/.json将返回代表用户的json对象 问题是我有一些带有自定义行为的路由,所以我需要它返回与我运行GET to/users/:id时相同的逻辑 我可以很容易地复制原始路由并向其中添加/.json,但出于明显的原因,这不是我想要的方式 我可以使用什么方法将.json处理程序“自动”固定到路由的末尾,并让它使用不同的自定义路由?一个好方法是使用查询参数。您可以按照通常的方式

我正在通过DJANGO API移植到Node.js,并且需要在路由末尾支持.json

示例:GET to/users/:id/.json将返回代表用户的json对象

问题是我有一些带有自定义行为的路由,所以我需要它返回与我运行GET to/users/:id时相同的逻辑

我可以很容易地复制原始路由并向其中添加/.json,但出于明显的原因,这不是我想要的方式


我可以使用什么方法将.json处理程序“自动”固定到路由的末尾,并让它使用不同的自定义路由?

一个好方法是使用查询参数。您可以按照通常的方式定义路线:

/users/:id
然后有一些逻辑(比如在中间件中)来查找
类型
查询参数

if(req.query.type) {
  if(req.query.type === 'json') {
    // send json
  }
}
客户端将点击的完整路径是:
/users/12345?type=json


参考资料:

一个很好的方法是使用查询参数。您可以按照通常的方式定义路线:

/users/:id
然后有一些逻辑(比如在中间件中)来查找
类型
查询参数

if(req.query.type) {
  if(req.query.type === 'json') {
    // send json
  }
}
客户端将点击的完整路径是:
/users/12345?type=json


参考:

您不能将其作为可选的路由参数,并在控制器中执行逻辑检查(是否使用自定义行为)?如果添加查询参数会怎么样
?type=json
在路由器之前添加一个查找.json的中间件,如果找到,则在req上设置一个属性并将其从url中删除,允许路由像往常一样处理它。但最好只使用适当的标题或查询参数。要继续@stUrb comment,请看以下问题:我不知道您可以在这样的路由中使用*,它应该满足我的需要。将其作为答案发布,我将接受。您不能将其作为可选路由参数,并在控制器中执行逻辑检查(是否使用自定义行为)吗?如果您添加一个查询参数怎么办
?type=json
在路由器之前添加一个查找.json的中间件,如果找到,则在req上设置一个属性并将其从url中删除,允许路由像往常一样处理它。但最好只使用适当的标题或查询参数。要继续@stUrb comment,请看以下问题:我不知道您可以在这样的路由中使用*,它应该满足我的需要。将此作为答案发布,我会接受。适用于新应用程序,但与OP的Prexisiting API不兼容。适用于新应用程序,但与OP的Prexisiting API不兼容。