Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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
Node.js Express.js 404当我通过';提供url参数时';_Node.js_Rest_Express_Curl - Fatal编程技术网

Node.js Express.js 404当我通过';提供url参数时';

Node.js Express.js 404当我通过';提供url参数时';,node.js,rest,express,curl,Node.js,Rest,Express,Curl,我有以下申请 var express = require('express') var bodyParser = require('body-parser') var app = express(); // All cals should be application/json parser var jsonParser = bodyParser.json(); app.use(jsonParser); const path=require('path') var cwd=process.

我有以下申请

var express = require('express')
var bodyParser = require('body-parser')

var app = express();

// All cals should be application/json parser
var jsonParser = bodyParser.json();
app.use(jsonParser);

const path=require('path')
var cwd=process.cwd()

/**
* Append Below here your api endpoints
*/

var Weather=require(path.resolve(cwd,'application/controllers/weather.js'));
var w=new Weather(app);

/**
* Do not append below here your api endpoints
*/

app.listen(8000, function () {
  console.log('Umbrelapp Backend app listening on port 8000!')
})
我还有以下控制器:

/**
* @param object express The basic express onject that handles the http request
*/
function Weather(express)
{
  var self=this;
  var endpoint='/weather';

  express.use(endpoint,function(req, res,next)
  {
    if(http.preprocess(req,res,next,endpoint))
    {
      switch (req.method) {
        case 'GET':
            self.get(req, res,next);
          break;
        default:
        self.unsupportedAction(req,res,next);
      }
    }
  });

  /**
  * Handler for http Get method
  * @param req The http request
  * @param res The http response
  * @param next The next express.js http handler
  */
  self.get=function(req,res,next)
  {
    console.log(req.params);
    res.send('Hello');
  };

  /**
  * Default handler for unwanted http methods
  * @param req The http request
  * @param res The http response
  * @param next The next express.js http handler
  */
  self.unsupportedAction=function(req,res,next)
  {
    res.status(405);
    res.send('None shall pass');
  }
}

module.exports=Weather;
但是当我尝试下面的curl命令时

curl-X-GET-i;回音

我得到以下回应

HTTP/1.1 404 Not Found
X-Powered-By: Express
X-Content-Type-Options: nosniff
Content-Type: text/html; charset=utf-8
Content-Length: 29
Date: Sat, 19 Nov 2016 18:06:41 GMT
Connection: keep-alive

Cannot GET /weather?hello=12
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 5
ETag: W/"5-ixqZU8RhEpaoJ6v4xHgE1w"
Date: Sat, 19 Nov 2016 18:08:08 GMT
Connection: keep-alive

Hello
但当我做以下动作时:

curl-X-GET-i;回音

我得到以下回应

HTTP/1.1 404 Not Found
X-Powered-By: Express
X-Content-Type-Options: nosniff
Content-Type: text/html; charset=utf-8
Content-Length: 29
Date: Sat, 19 Nov 2016 18:06:41 GMT
Connection: keep-alive

Cannot GET /weather?hello=12
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 5
ETag: W/"5-ixqZU8RhEpaoJ6v4xHgE1w"
Date: Sat, 19 Nov 2016 18:08:08 GMT
Connection: keep-alive

Hello

您知道如何在给定的任意数量的参数下使两个curl命令都起作用吗?

用以下形式定义端点对我很有用:

var endpoint='/weather?*';

最后,这对我起了作用:

  express.get(endpoint,function(req, res,next)
  {
    self.get(req, res,next);
  })
  .all(endpoint,function(req, res,next)
  {
    if(http.preprocess(req,res,next,endpoint))
    {
      switch (req.method) {
        //Just ot make sure thet get will execute all
        case http.method.GET:
            self.get(req, res,next);
          break;
        default:
        self.unsupportedAction(req,res,next);
      }
    }
  });