node.js - URL 路径包含未转义的字符

标签 node.js http

我收到以下错误。我知道我需要转义几个字符,但有没有更好的方法来做到这一点?

我的路径变量有一些错误

  getNearByUsers(latlong) {
    return http.get({
      host: 'search-vegme-user-7l3rylms73566frh4hwxblekn4.us-east-1.cloudsearch.amazonaws.com',
      path: '/2013-01-01/search?q=nikhil&expr.distance=haversin(35.621966,-120.686706,latlong.latitude,latlong.longitude)&sort=distance asc&return=distance,displayname,profileimageurl'
    }, function(response) {
      // Continuously update stream with data
      var body = '';
      response.on('data', function(d) {
        body += d;
      });
      response.on('end', function() {

        // Data reception is done, do whatever with it!
        var parsed = JSON.parse(body);
        console.log(parsed);

      });
    });
  }


  "errors": [
{
  "message": "Request path contains unescaped characters.",
  "originalError": {}
}
  ]

最佳答案

您需要使用 encodeURIComponent() .

var value = "haversin(35.621966,-120.686706,latlong.latitude,latlong.longitude)";
value = encodeURIComponent(value);
console.log(value); //"haversin(35.621966%2C-120.686706%2Clatlong.latitude%2Clatlong.longitude)"

改进的解决方案:Query-string encoding of a Javascript Object

serialize = function(obj) {
  var str = [];
  for(var p in obj)
    if (obj.hasOwnProperty(p)) {
      str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
    }
  return str.join("&");
}

console.log("/2013-01-01/search?" + serialize({
    'q': "nikhil",
    'expr.distance': "haversin(35.621966,-120.686706,latlong.latitude,latlong.longitude)",
    'sort': "distance asc",
    'return': "distance,displayname,profileimageurl"
}));

关于node.js - URL 路径包含未转义的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37086063/

相关文章:

node.js - 缓存自定义 CodeBuildStep 的构建输出和依赖项

逻辑错误的 HTTP 400(错误请求),而不是格式错误的请求语法

c# - API 调用的 JSON 返回类型

javascript - 尝试使用 AngularJS + $http.get 访问 Instagram API

java - 使用 Apache HttpClient 将数据发布到 netty

javascript - Node.js:异步回调 vs 同步回调 vs process.nextTick vs setTimeout

javascript - TypeORM select with case insensitive distinct

javascript - Node.js 服务器在浏览器中超时,但 cURL 请求有效

REST API 状态代码分页

node.js - NPM 无法在 Windows 上安装 "truffle"