添加组成员与添加所有者:数据格式不同

当使用 API 向群组添加成员和所有者时,所需的数据格式似乎不同。这可能是有意为之,但我想知道原因(这导致 pydiscourse 无法正常工作,而 pydiscourse 是我能找到的用于与 Python 中的 Discourse API 交互的最佳库)。

向群组添加成员:

curl -X PUT "https://{mydomain}/admin/groups/{group_id}/members.json" \
    -d 'usernames={my-username}' \
    -H "Api-Key: {my-api-key}" \
    -H "Api-Username: {my-api-username}"

向群组添加所有者:

curl -X PUT "https://{mydomain}/admin/groups/{group_id}/owners.json" \
    -d 'group[usernames]={my-username}' \
    -H "Api-Key: {my-api-key}" \
    -H "Api-Username: {my-api-username}"

我很好奇,为什么在所有者端点中,用户名参数的键需要写成 group[usernames] 而不是直接使用 usernames

我能给出的唯一原因是,它们实际上使用了两个不同的控制器。

添加成员端点映射到 groups 控制器:

PUT /admin/groups/:id/members(.:format) groups#add_members

而添加所有者端点映射到 admin/groups 控制器:

PUT /admin/groups/:id/owners(.:format) admin/groups#add_owners

我们不太可能更新此端点,因为许多集成已经按原样使用该端点。您最好的办法是在 pydiscourse 仓库中提一个 issue。在 pydiscourse 内部解决之前,您也可以在您的 Python 应用中通过猴子补丁(monkey patch)修复 add_group_owner 方法。