You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Curl调用MongoDB Atlas API创建customRoles失败求助

排查MongoDB Atlas自定义角色创建的Curl请求问题

针对你遇到的三个错误,逐个拆解原因和解决办法:


1. 415 "Unsupported Media Type"

这个错误原因很明确:Atlas自定义角色创建API仅接受JSON格式的请求体,你最初的POST请求未添加Content-Type: application/json头,服务器无法识别请求体格式,因此返回415。解决方式就是在请求头中必须包含该字段。

2. 406 "INVALID_VERSION_DATE"

MongoDB Atlas API有严格的版本要求,所有请求必须指定API版本日期。仅添加Content-Type头不足以满足要求,需通过Accept头明确指定版本(推荐方式),或在Content-Type头中附带版本参数。例如:

  • 正确的Accept头格式:Accept: application/json;version=2023-10-01(版本号选择官方文档中的最新稳定版本即可)

3. 400 "MALFORMED_JSON"

该错误说明你的请求体JSON不符合Atlas API的格式规范,常见问题包括:

  • 字段拼写错误:比如将必填字段roleName写成小写rolename,或databaseName拼写失误
  • 缺少必填字段:自定义角色必须包含roleName、databaseName、actions数组这三个核心字段
  • JSON语法错误:比如引号不匹配、数组/对象末尾多写逗号、括号未闭合
  • actions数组格式错误:每个动作对象必须包含action(如find、insert等权限动作)和resource(指定权限作用的库/集合),resource中的db和collection不可省略(集合为空字符串表示作用于整个数据库)

正确的Curl请求示例

curl --request POST 'https://cloud.mongodb.com/api/atlas/v1.0/groups/你的项目ID/customRoles' \
--header 'Accept: application/json;version=2023-10-01' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 你的API密钥' \
--data-raw '{
  "roleName": "自定义角色名",
  "databaseName": "目标数据库名",
  "actions": [
    {
      "action": "find",
      "resource": {
        "db": "目标数据库名",
        "collection": ""
      }
    },
    {
      "action": "insert",
      "resource": {
        "db": "目标数据库名",
        "collection": "指定集合名"
      }
    }
  ]
}'

你可以将自己的请求体与上述示例对比,检查语法和字段是否符合要求,也可使用在线JSON校验工具先验证请求体的语法正确性。

内容的提问来源于stack exchange,提问作者newbietostack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:25:14