调用Google Chat API创建空间返回404 Method not found问题咨询
问题原因
你的原始请求返回404是因为参数组合不符合Google Chat API创建空间的规则,核心错误点如下:
- 错误指定了空间类型:你传入的
spaceType值为DIRECT_MESSAGE(私信空间),这类空间不支持通过spaces.create接口主动创建,私信空间是用户或应用发起私信对话时由系统自动生成的,主动调用创建接口传该类型会直接触发接口路由匹配失败,返回Method not found的404错误。 - 传入了无效/冗余字段:
name是空间创建完成后系统自动生成的只读资源ID,格式为spaces/[唯一标识],创建请求中不需要主动传入该字段,你传入ABCDEFG属于非法传值threaded是当前API版本已废弃的字段,无需传入displayName仅对SPACE类型(自定义命名的群聊空间)生效,私信空间不支持设置自定义显示名称
为什么加了无效字段反而返回400
当你在请求体里加入foo这个API不识别的字段时,请求会在进入业务逻辑前的参数校验阶段直接被拦截,还没走到空间类型匹配的逻辑,所以会直接返回字段非法的400错误,不会触发后续的404。
正确调用示例
如果要主动创建可自定义名称的群聊空间,将请求体修改为如下即可:
$response = $client->post( 'https://chat.googleapis.com/v1/spaces', [ RequestOptions::JSON => [ 'spaceType' => 'SPACE', 'displayName' => 'TestSpace' ], ]);
如果需要创建私信空间,要使用对应私信场景的专用接口流程,不能直接调用spaces.create接口传入DIRECT_MESSAGE类型。
内容的提问来源于stack exchange,提问作者Sklerozz
相关产品推荐
相关产品推荐

