0

在 Google Apps 脚本中,我使用命令调用 G Suite Admin SDK Directory API AdminDirectory.Groups.insert(group)。这是否被视为 POST 请求?我想知道,因为我知道在没有明确指定 POST 的情况下发出 POST 请求的隐式方法,例如urlfetch(). 在我正在进行的项目中,出于安全原因,我试图避免使用 HTTP 请求。

我在网上做了一些研究,但我很难找到这个问题的答案。我在想,由于传入的是 JavaScript 对象而不是 JSON 对象insert(),因此它不会被视为 POST 请求,因为通常在将数据发送到服务器或从服务器检索数据时使用 JSON 表示法。因为group是 JavaScript 对象而不是 JSON 对象,所以我认为该命令 AdminDirectory.Groups.insert(group)不会是 POST 请求。我在正确的轨道上吗?

在某些情况下,这是我为创建组而编写的函数:

function createAGroup() {
    var group = {
        email: "test-group@test.com",
        name: "Test Group",
        description: "This is a test group."
    };
    group = AdminDirectory.Groups.insert(group);
    Logger.log('Group %s created.', group);
}

该函数createAGroup()成功创建了一个组。但是,该命令是否AdminDirectory.Groups.insert(group)使用 POST 请求来创建组?

4

1 回答 1

2

如果您不确定您正在查看哪种请求 - 您可以在 Google Developers Reference 中找到它。

在你的情况下:

如果您转到管理目录的 Apps 脚本参考: https ://developers.google.com/apps-script/advanced/admin-sdk-directory

它将链接到 Admin SDK Directory API 的特定方法的参考文档,您可以在其中找到特定方法 Groups:insert 的参考 在此处输入图像描述

https://developers.google.com/admin-sdk/directory/v1/reference/groups/insert

它告诉你:

HTTP request

POST https://www.googleapis.com/admin/directory/v1/groups

此语法会一对一地转换为 Apps Script,您可以证明如下:

如果您使用请求正文测试“Try this API”中的方法,结果将是:

200
{
"kind": "admin#directory#group",
"id": "03oy7u293zlw6l7m",
"etag": "\"zPBZh0mDALCYqI567HUiXii8qQjpg/VckrVGnV8Hs56iDrqRt7j4XT5eRyM\"",
"email": "test-group@test.com",
"name": "Test Group",
"description": "This is a test group",
"adminCreated": true
}

现在,如果您在 Apps Script 中运行它,您的 Looger.lo 输出将是:

Group {kind=admin#directory#group, name=Test Group, description=This is a test group., etag="zPBZh0mDALCYqI7HMkUiXii8qQjpg/gIcr9tsZMDRRrDJECvLtNT66KBc", id=00ha3apch11zp6hh, adminCreated=true, email=test-group@test.com} created.

您可以看到,在这两种情况下,响应都以相同的方式检索数据并为您提供等效的反馈。因此,可以肯定地说,App Script 中使用的方法确实使用了 POST 请求。

作为基本规则:

任何在后端创建新对象(例如插入用户或组)都是 POST 请求,任何更新现有对象(例如更改用户的个人数据)都是 PUT 请求,任何检索数据(例如列出用户) ) 是一个 GET 请求,而 DELETE 是不言自明的。

App Script 是一种“工具”,无需手动执行请求。但始终检查参考如何实现特定方法。

如果您确实想发出显式 JSON 请求 - 您可以使用 JSON.stringify() 将 JavaScript 表示法转换为 JSON 字符串,如下所述:

https://developers.google.com/apps-script/guides/services/external#work_with_json

于 2019-06-24T11:09:09.287 回答