如何对Google API搜索查询进行编码?

时间:2016-02-21 02:56:53

标签: javascript google-api urlencode

通过他们的API在Google云端硬盘中搜索文件,他们的文档(here)说明了如何对搜索字符串进行编码:

  

此页面上的所有示例都显示未编码的q参数,其中 name ='hello'编码为 name +%3d +%27hello%27

那是什么?如何对字符串进行编码?

encodeURIComponent("name = 'hello'");给我“name%3D'hello'”

编辑:我在这里仍然很困惑。我现在正在尝试手工执行测试查询,甚至无法实现。根据上面的例子,这应该工作:

https://www.googleapis.com/drive/v2/files?q=name+%3d+%27hello%27&access_token=...

但即使如此,粘贴在他们的文档中,也给了我:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalid",
    "message": "Invalid query",
    "locationType": "parameter",
    "location": "q"
   }
  ],
  "code": 400,
  "message": "Invalid query"
 }
}

是什么给出的?

2 个答案:

答案 0 :(得分:0)

它适用于Google Drive API的v3,您不必使用+号。

基于您提供的示例的以下请求应该正常工作(当然使用有效的访问令牌):

RandomForestRegressor

答案 1 :(得分:-1)

试试这个

  

通过将某些字符的每个实例替换为表示字符的UTF-8编码的一个,两个,三个或四个转义序列来编码统一资源标识符(URI)组件(对于由字符组成的字符,将只有四个转义序列)两个"代理"字符)。

var encoded = encodeURIComponent(str);

示例:

var q = "title contains 'hello'";
var url = "https://www.googleapis.com/drive/v2/files?q="+encodeURIComponent(q);