2016-11-24 4 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))... 
} 
関連する問題