【问题标题】:Multiple parameter not working in NodeJS Express多个参数在 NodeJS Express 中不起作用
【发布时间】:2016-12-19 15:52:20
【问题描述】:

我有网址:

POST http:/host/core/api/v1/endpoints/create/:name/:description/:address

我正在使用 Express NodeJS。此 url 将创建一个带有参数属性的端点。但是......当我尝试使用参数请求时,我收到了错误:

Error: Not Implemented
   at router.use (D:\Study\NodeJS\ProjectEnviromentMonitoring\EnvironmentMonitoring\controllers\api.js:517:14)
   at Layer.handle [as handle_request] (D:\Study\NodeJS\ProjectEnviromentMonitoring\EnvironmentMonitoring\node_modules\express\lib\router\layer.js:95:5)
   at trim_prefix (D:\Study\NodeJS\ProjectEnviromentMonitoring\EnvironmentMonitoring\node_modules\express\lib\router\index.js:312:13)
   at D:\Study\NodeJS\ProjectEnviromentMonitoring\EnvironmentMonitoring\node_modules\express\lib\router\index.js:280:7
   at Function.process_params (D:\Study\NodeJS\ProjectEnviromentMonitoring\EnvironmentMonitoring\node_modules\express\lib\router\index.js:330:12)
   at next (D:\Study\NodeJS\ProjectEnviromentMonitoring\EnvironmentMonitoring\node_modules\express\lib\router\index.js:271:10)
   at Function.handle (D:\Study\NodeJS\ProjectEnviromentMonitoring\EnvironmentMonitoring\node_modules\express\lib\router\index.js:176:3)
   at router (D:\Study\NodeJS\ProjectEnviromentMonitoring\EnvironmentMonitoring\node_modules\express\lib\router\index.js:46:12)
   at Layer.handle [as handle_request] (D:\Study\NodeJS\ProjectEnviromentMonitoring\EnvironmentMonitoring\node_modules\express\lib\router\layer.js:95:5)
   at trim_prefix (D:\Study\NodeJS\ProjectEnviromentMonitoring\EnvironmentMonitoring\node_modules\express\lib\router\index.js:312:13)

如果成功,这是 JSON 将返回:

{
   "message": "success",
   "statuscode": 200
}

这是我的测试:

POST http://localhost:8082/core/api/v1/endpoints/create/endpoint3/abc/def

更新:我获取参数的代码是:

router.route('/endpoints/create/:name/:description/:address').post((req, res) => {
var name = req.params.name;
var description = req.params.description;
var address = req.params.address;
 }

【问题讨论】:

  • 认为你需要分享你的一些代码,如果你想让任何人有机会给你建议......
  • 我已经更新了我的代码以获取参数

标签: node.js rest api express


【解决方案1】:

您描述的错误很可能与您如何将路由器连接到 express 应用程序有关。您在上面发布的代码 sn-p 工作正常。

下面是一个工作示例。

var express = require('express')
var app = express();
var router = express.Router();

router.route('/endpoints/create/:name/:description/:address').post((req, res) => {
    var name = req.params.name;
    var description = req.params.description;
    var address = req.params.address;
    console.log({ name: name, desc: description, address: address });
    res.json({
        "message": "success",
        "statuscode": 200
    });
});

app.use(router);
app.listen(3000, function () {
    console.log('Example app listening on port 3000!')
});

测试:curl -X POST http://localhost:3000/endpoints/create/test/hello/world

【讨论】:

    【解决方案2】:

    为什么不直接使用 req.parameter 以便您可以使用常用字符('?' 和 '&')获得完整的上下文?例如,您可以简单地这样做:

    var host = req.param('host');
    var name = req.param('name');
    var description = req.param('description');
    

    并像http://localhost:8082/something?host=$VAR_HOST&name=$VAR_NAME&description=$VAR_DESCRIPTION 一样访问它

    【讨论】:

    • 我正在使用req.params.blarblar获取参数
    猜你喜欢
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    相关资源
    最近更新 更多