如何使用 POST 和 GET 请求到 PARSE 平台 REST API 使用 Google Apps 脚本

How to use POST and GET request to PARSE platform REST API using Google Apps Script

在使用 API 方面我是一个初学者,最近我花了很多时间尝试使用 Parse Platform API 将其与我的 Google 电子表格。我正在努力用 UrlfetchApp 格式化我的 GETPOST 请求。如何使用 Google Apps 脚本向 PARSE 平台 REST API 发出 POST 和 GET 请求?


既然我成功了,我只想分享我的脚本,以便它可以帮助其他人。 请参阅下面我自己的回答

基本上,我做了2个程序:

  • 一个名为“InsertIntoPARse”的程序允许我向我的解析平台发送请求。它有 3 个输入:方法(POST 或 GET)我们想要 read/modify(数据库的 table)的 Class 和要考虑的脚本。
  • 一个用于构建脚本的程序,调用“InsertIntoParse”并返回结果。
var API_KEY = 'Insert Here your API KEY';
var applicationId = 'Insert here your application Id';

function InsertIntoParse(Method, Class, Script) {
  var root =
    'http://ec2-99-999-999-99.us-east-2.compute.amazonaws.com:80/parse';
  var endpoint = '/classes/' + Class;

  if (Method == 'POST') {
    endpoint = endpoint + '/';
  } else if (Method == 'GET') {
    var GetScript = Script;
    Script = '';
    endpoint = endpoint + '?' + GetScript;
  }

  var params = {
    method: Method,
    muteHttpExceptions: true,

    headers: {
      'Content-Type': 'application/json',
      'X-Parse-Application-Id': applicationId,
      'X-Parse-REST-API-Key': API_KEY,
    },
    payload: Script,
  };

  var response = UrlFetchApp.fetch(root + endpoint, params);
  //var data = response.getContentText();
  //var json = JSON.parse(data);
  //var campaigns = json['campaigns'];

  Logger.log('response = ' + response);
  return response;
}

这里有一些解释:

  • 在上面的代码中,您需要使用自己的值自定义两个变量 API_KEY 和 applicationId。您还必须使用解析平台的 URL 自定义变量“root”(我的由 Amazon Web Services 托管)。
  • 使用函数 UrlFetchApp.fetch 将查询发送到您的 Parse 平台服务器。此函数有 2 个输入:要联系的 url 和一个包含参数的附加变量。根据您将使用的方法(GET 或 POST),URL 和参数将有所不同:
  • 对于 POST 方法,url 类似于“http://MyParsePlatform.com:80/parse/classes/MyCustomClassName/”,参数将包含称为“payload”的行,您将在其中指定要创建的对象的条件
  • 对于 GET 方法,参数将有一个空的有效负载,url 将类似于“http://MyParsePlatform.com:80/classes/List?where={ "MyColumnName":"Value"}" 但是因为 URL 不能有像 {} 和 " 这样的特殊字符,我们需要用 html 代码替换它们(%22 代表 ",%7B对于 { 等)。最后一件事:“where”后面的等号需要保留一个 = 并且不应被 %3D 替换。

请注意,如果您发送带有负载的 GET 请求,parse 会将其视为 POST 并会在您的 class.

中创建一个新元素

这是为 GET 请求调用“InsertIntoParse”的第二个程序:

function GetExample() {

var obj='{"fam_commune":"ANTIBES"}'
var scriptGetFamille = 'where='+encodeURIComponent(obj);
var retourGetFamille=InsertIntoParse('GET','MyClassName',scriptGetFamille);
var JSONresponse = JSON.parse(retourGetFamille.getContentText());
}

一些解释:

  • 变量“obj”包含我的 GET 的搜索条件
  • 在“scriptGetFamille”变量定义中,我使用函数“encodeURIComponent”将所有特殊字符替换为 HTML 代码。请注意,“where=”不在此函数中,以避免在使用函数“encodeURIComponent”时将 = 替换为其 HTML 等效代码。
  • 变量“retourGetFamille”将获取查询结果。

现在让我们看一个例子 POST:

function AddAdherent(NumLigne) {

scriptFamille="{\"MyColumnName1\": \"MyValueForColumn1\",\"MyColumnName2\": \"MyValueForColumn2\"}"
var retourFamille=InsertIntoParse('POST','MyCustomClassName',scriptFamille);
var JSONresponse = JSON.parse(retourFamille.getContentText());
var fam_cd=JSONresponse.objectId;

}

这里有一些解释:

  • “scriptFamille”变量允许我定义我将创建的对象的特征(class 不同列的值)。请注意使用 \(转义字符)来确保后面的 " 字符不会关闭字符串。
  • 变量retourFamille会得到请求的结果。它将是一个包含 ObjectId 和新对象创建日期的 JSON 对象。
  • 要在字符串变量中取回ObjectId,我们需要先解析API的响应(见“JSONresponse”变量的内容),然后得到Object使用 JSONresponse.objectId
  • 的 ID 值

PS:请注意我上面的示例远非完美,特别是因为我没有使用 https 连接(我还没有在我的 Parse 平台服务器上设置 https,这是强制性的数据交换的安全性)

我希望这一切对人们有所帮助,让您的生活更轻松。祝你好运!