====== 新版群组/聊天室服务 REST API差异说明v2 ====== (最新更新时间: 2017-01-06) 第一版差异说明发出后,我们收到了一些开发者的反馈。根据这些反馈,我们对新版群组/聊天室的异常、状态码进行了调整和优化。相比2017-01-03第一个版本,主要更新内容: * com.easemob.group.exception.ForbiddenOpException 异常类型的状态码 由400变成403,该异常表示本次调用不符合群组/聊天室操作的正确逻辑,例如调用添加成员接口,添加已经在群组里的用户,或者移除聊天室中不存在的成员等操作。 * 部分操作抛出的com.easemob.group.exception.InvalidParameterException (状态码400) 异常类型替换为 com.easemob.group.exception.ForbiddenOpException (状态码403) * 如果用户加入群组/聊天室的个数超限,或者appkey下群组/聊天室的个数超限,将抛出异常com.easemob.group.exception.ExceedLimitException, 状态码 403 相比2017-01-03第一个版本,异常及状态码有改动的接口如下: * 群加人(单加/批量),用户已经在群里 * 群减人(单减/批量减)被减用户(存在但)都不在群 * 转让群主,自己转自己 * 转让群主,转给一个不在群里的用户 * 批量添加黑名单,用户都已经在黑名单 * 单个加入黑名单,用户不是群组成员 * 把群主加入黑名单 * 修改聊天室信息,修改的字段含有不允许修改的字段,例如id * 聊天室减人,被删除成员不在聊天室 * 限制检查 ===== 群组服务 ===== ==== 成员操作 ==== === 群加人(单加/批量),用户不存在 === * 旧群组抛出的异常类型:java.lang.IllegalArgumentException 状态码为400 * 新群组抛出的异常类型: com.easemob.group.exception.ResourceNotFoundException 状态码为404,异常描述为"username %s doesn't exist!" === 群加人(单加/批量),用户已经在群里 === * 旧群组服务返回200, * 新群组服务抛出的异常类型:com.easemob.group.exception.ForbiddenOpException 状态码为403 异常描述为 "can not join this group, reason:%s"(注:批量加人时,如果部分用户不在群里,则该部分用户可以添加成功,返回状态码为200) === 群减人(单减/批量减)被减用户(存在但)都不在群 === * 旧群组服务返回200 * 新群组服务抛出的异常类型: com.easemob.group.exception.ForbiddenOpException 状态码为403 异常描述为 "users %s are not members of this group!"(注:批量减人时,如果部分用户在群里,则该部分用户可以移除成功,返回状态码为200) ==== 转让群主 ==== === 转让群主,自己转自己 === * 旧版群组服务返回200 * 新版群组服务抛出异常:com.easemob.group.exception.ForbiddenOpException 状态码403 异常描述:"new owner and old owner are the same " === 转让群主,转给一个不在群里的用户 === * 旧群组服务可以转成功,原来的群主被从群里移除 * 新群组服务要求新群主必须首先是群成员,因此会抛出异常 com.easemob.group.exception.ForbiddenOpException 状态码403 异常描述为:"user: %s doesn't exist in group: %s" === 转让群主,转给一个群里的其他成员 === * 旧群组服务旧群主从群成员中移除 * 新版群组服务,旧群主还留在群里。 ==== 黑名单操作 ==== === 添加黑名单(单个/批量), 用户不是群成员 === * 旧群服务返回200 * 新群服务抛出异常: com.easemob.group.exception.ForbiddenOpException 状态码 403 异常描述为:"users %s are not members of this group!" === 把群主加入黑名单 === * 旧群服务返回200 * 新群服务抛出异常: com.easemob.group.exception.ForbiddenOpException 状态码 403 异常描述为:"forbidden operation on group owner!" ===== 聊天室服务 ===== ==== 聊天室信息维护 ==== === 创建聊天室,聊天室成员不存在,旧群组服务返回400,新群组服务返回404 === * 旧群组抛出的异常类型:java.lang.IllegalArgumentException 状态码为400 * 新群组抛出的异常类型: com.easemob.group.exception.ResourceNotFoundException 状态码为404 异常描述为"username %s doesn't exist!" === 删除聊天室,聊天室id不存在 === * 旧群组服务返回200 * 新群组服务抛出的异常类型: com.easemob.group.exception.ResourceNotFoundException 状态码为404 异常描述为:"grpID %s does not exist!" === 修改聊天室信息,聊天室id不存在 === * 旧群组服务返回200 * 新群组服务抛出的异常类型: com.easemob.group.exception.ResourceNotFoundException 状态码为404 异常描述为:"grpID %s does not exist!" === 修改聊天室信息,修改的字段含有不允许修改的字段,例如id === * 旧群组服务返回200,修改了允许修改的内容 * 新群组服务,如果传入的修改字段中,包含不可更改,或者是无效的字段,会抛出异常: com.easemob.group.exception.InvalidParameterException 状态码为400 异常描述为 "some of %s could not be modified" 或者 "some of %s are not valid fields" * 新群组服务,禁止通过修改群组/聊天室接口来修改owner, 否则会抛出异常:com.easemob.group.exception.ForbiddenOpException,状态码403 异常描述为: "owner cannot be updated through this method!") === 删除不存在的聊天室 === * 旧群组服务返回200 * 新群组服务抛出的异常类型: com.easemob.group.exception.ResourceNotFoundException 状态码为404 异常描述为:"grpID %s does not exist!" ==== 成员操作 ==== === 聊天室加人(单加/批量),聊天室不存在 === * 旧群组服务返回200 * 新群组服务抛出的异常类型: com.easemob.group.exception.ResourceNotFoundException 状态码为404 异常描述:"grpID %s does not exist!" === 聊天室加人(单加/批量),被添加用户都不存在,或某个成员不存在 === * 旧群组抛出的异常类型:java.lang.IllegalArgumentException 状态码为400 * 新群组抛出的异常类型: com.easemob.group.exception.ResourceNotFoundException 状态码为404 异常描述: "username %s doesn't exist!" === 聊天室减人,被删除成员不在聊天室 === * 旧群组服务返回200 * 新群组服务抛出的异常类型: com.easemob.group.exception.ForbiddenOpException 状态码为403 异常描述: "users %s are not members of this group!" === 聊天室减人(单减/批量减),聊天室id不存在 === * 旧群组服务返回200 * 新群组服务抛出的异常类型: com.easemob.group.exception.ResourceNotFoundException 状态码为404 异常描述:"grpID %s does not exist!" ==== 限制检查 ==== 用户创建群组/聊天室,群组/聊天室加人等操作,会检查如下参数: * 用户加入的群组个数限制 * 用户加入的聊天室个数限制 * appkey下创建群组个数的限制 * appkey下创建聊天室个数的限制 超过限制的异常: * 旧群组服务,如果超过限制,会抛出异常: java.lang.IllegalArgumentException 状态码为400; * 新群组服务,如果超过限制,会抛出异常:com.easemob.group.exception.ExceedLimitException 状态码为 403 新版异常描述为: * 用户加入的群组/聊天室超过上限:"can not join this group, reason:user %s has joined too many groups/chatroom!" * appkey下创建群组/聊天室超过上限:"this appKey has create too many groups/chatrooms!" ==== 权限检查 ==== 所有群组/聊天室的接口,如果调用者不具备相应接口的调用权限, 抛出的异常类型:com.easemob.group.exception.GroupAuthorizationException,状态码为 401 ---- 上一页:[[im:server:basics:chatroom|聊天室管理]] 下一章:[[im:android:sdk:import|Android客户端集成]]