如何对谷歌 API 搜索查询进行编码

How to encode Google API search queries?

本文关键字:查询 编码 搜索 API 谷歌      更新时间:2023-09-26

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

此页面上的所有示例都显示了未编码的 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"
 }
}

什么给?

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

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

https://www.googleapis.com/drive/v3/files?q=name%3D%27hello%27&access_token=...

试试这个

通过将

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

var encoding = encodeURIComponent(str);

例:

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