Gmail API后端错误:同时更新草稿时草稿是否已损坏?

时间:2015-03-25 23:45:52

标签: gmail-api

我的应用使用gmail api在一段时间内更新gmail草稿。我发现,如果我碰巧重复gmail api更新调用相同的草案ID(这可能很容易做,因为API有时需要10秒才能响应),API会完全破坏草稿,这样我就得到了a"后端错误"每当我再次尝试访问它时。

以下是对repro的调用:

  1. 创建草稿:

    curl https://www.googleapis.com/gmail/v1/users/me/drafts -H"授权:Bearer foracted" -H" Content-Type:application / json" -d' {"消息&#34 ;: {"原料&#34 ;:" RnJvbTogJ21lJw0KVG86IGJyYWRAbWl4bWF4LmNvbQ0KU3ViamVjdDogVGVzdCBEcmFmdCENCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04DQoNCk15IG1lc3NhZ2U =" }' {  " id":" r7481949043481090326",  " message":{   " id":" 14c53392c1ad1a38",   " threadId":" 14c53392c1ad1a38",   " labelIds":[    " DRAFT"   ]  } }

  2. 同时更新该草稿两次(通知命令并行运行):

    curl -X PUT https://www.googleapis.com/gmail/v1/users/me/drafts/r7481949043481090326 -H"授权:Bearer redacted" -H" Content-Type:application / json" -d' {"消息&#34 ;: {"原料&#34 ;:" RnJvbTogJ21lJw0KVG86IGJyYWRAbWl4bWF4LmNvbQ0KU3ViamVjdDogVGVzdCBEcmFmdCENCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04DQoNCk15IG1lc3NhZ2U =" }' &安培; curl -X PUT https://www.googleapis.com/gmail/v1/users/me/drafts/r7481949043481090326 -H"授权:Bearer redacted" -H" Content-Type:application / json" -d' {"消息&#34 ;: {"原料&#34 ;:" RnJvbTogJ21lJw0KVG86IGJyYWRAbWl4bWF4LmNvbQ0KU3ViamVjdDogVGVzdCBEcmFmdCENCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04DQoNCk15IG1lc3NhZ2U =" }' [1] 96019 {  " id":" r7481949043481090326",  " message":{   " id":" 14c5339e1cbcb58b",   " threadId":" 14c5339e1cbcb58b",   " labelIds":[    " DRAFT"   ]  } } {  "错误":{   "错误":[    {     "域":"全球",     "原因":" backendError",     " message":" Backend Error"    }   ]   "代码":500,   " message":" Backend Error"  } }

  3. 注意"后端错误"第二次通话。现在,gmail中的用户草稿文件夹中将有两个草稿。

    1. 现在,在两个更新调用完成后,尝试获取草稿:

      curl https://www.googleapis.com/gmail/v1/users/me/drafts/r7481949043481090326 -H"授权:Bearer foracted" {  "错误":{   "错误":[    {     "域":"全球",     "原因":" backendError",     " message":" Backend Error"    }   ]   "代码":500,   " message":" Backend Error"  } }

    2. 通过该ID获取或更新草稿的所有后续调用都将返回Backend Error,并且用户的草稿文件夹中也会留下两个副本。

      明显的解决方法是添加保护措施,以便我永远不会尝试同时更新相同的草稿ID。但这是一个非常严重的错误,应该由Gmail团队查看。

1 个答案:

答案 0 :(得分:0)