Rest Can';t使用';仅元数据';发送消息的URI
我正在尝试复制API Explorer的功能,该功能位于页面底部的以下位置: 我已经知道如何创建base64编码的消息,并可以让API浏览器发送消息,但我正在尝试在“Advanced REST Client”Chrome应用程序中复制结果 我已将我的url设置为:Rest Can';t使用';仅元数据';发送消息的URI,rest,gmail-api,Rest,Gmail Api,我正在尝试复制API Explorer的功能,该功能位于页面底部的以下位置: 我已经知道如何创建base64编码的消息,并可以让API浏览器发送消息,但我正在尝试在“Advanced REST Client”Chrome应用程序中复制结果 我已将我的url设置为: https://www.googleapis.com/gmail/v1/users/me/messages/send 我添加了以下标题: Authorization: Bearer (valid Oauth2 token here)
https://www.googleapis.com/gmail/v1/users/me/messages/send
我添加了以下标题:
Authorization: Bearer (valid Oauth2 token here)
Content-Type: message/rfc822
并将主体设置为:
{"raw":"Q29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSINCk1JTUUtVmVyc2lvbjogMS4wDQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0DQp0bzogYnJ5Y2VAdGhvcm1lZGlhLmNvbQ0KZnJvbTogYnJ5Y2VAdGhvcm1lZGlhLmNvbQ0Kc3ViamVjdDogVGVzdA0KDQpIZWxsbyE="}
当我发送请求时,我会得到响应:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "wrongUrlForUpload",
"message": "Uploads must be sent to the upload URL. Re-send this request to https://www.googleapis.com/upload/gmail/v1/users/me/messages/send"
}
],
"code": 400,
"message": "Uploads must be sent to the upload URL. Re-send this request to https://www.googleapis.com/upload/gmail/v1/users/me/messages/send"
}
}
我试图弄清楚如何形成请求,以允许我使用元数据URI。API的文档似乎只关注上传URI,因此理解这一点有点粗糙。我对高级REST客户端不太熟悉,但一个有效的ajax请求应该是:
$.ajax({
type: "POST",
url: "https://www.googleapis.com/gmail/v1/users/me/messages/send",
contentType: "application/json",
dataType: "json",
beforeSend: function(xhr, settings) {
xhr.setRequestHeader('Authorization','Bearer ' + accessToken);
},
data: JSON.stringify({"raw": mail}) // The url-safe base64 encoded mail
换句话说,我认为您使用了错误的内容类型;当您发送带有“raw”参数的对象时,它应该是“application/json”,而不是“message/rfc822”。您是否使用了此链接中提到的相同示例代码我在该页面上使用了python示例,以确保生成了有效的base64编码消息,但除此之外,代码并不能帮助我理解RESTAPI,因为它都是在客户机库中抽象出来的。我一直在挖掘python库的源代码,试图获得一个想法,但我不理解其中90%的内容,就是这样。我想这意味着它应该是JSON,因为它是我正在传递的JSON对象。我想问题在于,它特意声明应该使用“message/rfc822”内容类型头,而没有提及任何替代方法。无论如何,谢谢!是的,我同意。文档仍然有缺陷:)很高兴我能帮上忙@Thole你能解释一下你如何传递上面的accessToken和你如何在中传递accessToken之间的区别吗?你上面的答案对我很有用,但我无法得到与工作相关的答案,我不明白为什么。@DanKlos他们应该是等价的。你犯了什么错误?有一个头
授权
和字符串'Bearer'
作为值应该就可以了@Thole这是400种,但我现在记不清了。知道它们是等价的,我确信这只是我的一个语法错误——我是个新手。