我有一个NodeJS和一个处理get请求的API。
...
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)
知道我该怎么办才能修复它?
答案 0 :(得分: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))...
}