INVALID_ARGUMENT(400错误)调用为Stackdriver错误报告API
问题描述:
时当试图调用Stackdriver Error Reporting API(经由Client-Side JavaScript libraryvia the API explorer或),收到以下错误:INVALID_ARGUMENT(400错误)调用为Stackdriver错误报告API
请求:
{ "message" : "test" }
响应:
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT"
}
}
Stackdriver错误报告API已启用,并且我拥有App Engine项目的所有者权利。
API是否不起作用?如果我做错了什么,有人可以帮忙吗?
答
报告事件的文档说明ServiceContext is required。
如果您只发送消息(不是堆栈跟踪/例外),则还需要包含context with a reportLocation。这在message
字段的文档中有详细说明,但并不明显。
从API浏览器中的以下工作:
{
"context": {
"reportLocation": {
"functionName": "My Function"
}
},
"message": "error message",
"serviceContext": {
"service": "My Microservice",
}
}
你可能有兴趣在How Error are Grouped的文档了。
FWIW,我在这个产品上工作,我认为错误信息太泛化了。问题是(?)服务堆栈会清理邮件,除非它们被标注为公共消费。我会追逐的。
接收到请求后,API应该验证是否存在所有必需的参数。如果它们不存在,那么API应该抛出一个特定参数丢失的例外。 – Lee
请注意,[JS实现没有指定reportLocation](https://github.com/GoogleCloudPlatform/stackdriver-errors-js/blob/master/dist/stackdriver-errors-concat.js#L81)。它是在测试JS包装,我第一次遇到400错误,这似乎是这样的原因。 – Lee
谢谢你指出。请记住,该模块被标记为“实验” –