2016-11-24 57 views
0

我有一个NodeJS和一个处理get请求的API。当路由器获取编码的URL时,NodeJS Express Server崩溃

... 
var apiRoutes = express.Router(); 

apiRoutes.get("/filter/:name",function(req, res){ 
    // do something 
    res.json(result); 
} 

app.use('/api', apiRoutes); 

然后在客户端(不是一个重要的信息,但它是Angular2):

find(name:string): void{ 
    name.trim(); 
    this.http.get(encodeURI('http://server_address/api/filter/' + name))... 

它非常适用参数不包含空格等。为了使其与工作间隔输入也,我用encodeURI功能。但是,当我给空白输入服务器给出错误:

undefined:0 

^ 
SyntaxError: Unexpected end of input 
    at Object.parse (native) 
    at IncomingMessage.<anonymous> (/user/home/server/server.js:65:28) 
    at IncomingMessage.EventEmitter.emit (events.js:117:20) 
    at _stream_readable.js:920:16 
    at process._tickCallback (node.js:415:13) 

任何想法我能做些什么来解决它?

回答

1

我想出了这个问题。我在做类似:

apiRoutes.get("/filter/:name",function(req, res){ 
    http.request(anotherURL + req.body.name)... 
} 

,并认为该name参数已经被编码,因为它是在客户端编码。但是我发现我必须再次将它编码到服务器中。

apiRoutes.get("/filter/:name",function(req, res){ 
    http.request(anotherURL + encodeURI(req.body.name))... 
}