在线协同编辑器Etherpad介绍与使用

1、介绍

Etherpad 是一个基于 nodejs 的在线文档编辑器,服务端性能可以得到保证,多个客户端的操作是即时同步的,而且对文档数据提供了存储的支持。

2、运行

命令行进行项目根目录后,运行 /bin/run.sh,项目即可运行到 127.0.0.1:9001,输入 /admin 可进入管理员界面进行配置管理(开启 admin 管理界面需要将 settings.json 中的 users 注释去掉)。在管理员界面修改 settings 后可进行保存和重启。

3、权限控制

默认情况下,一个记事本能被任何人编辑,只要拿到 URL 就可以

要进行权限控制,只有指定的用户才能编辑,接口都是基于 HTTP 的,每个接口都有一个默认参数 apikey,它的值在第一次启动时生成在 APIKEY.txt 中。

2.1、创建用户

请求: http://127.0.0.1:9001/api/1/createAuthorIfNotExistsFor?apikey=7fc8333b224aae0a8dbe6281e9c8224652b451ded5620aef361330cf9325fcb2&name=Michael&authorMapper=7

响应:

{
    "code": 0,
    "message": "ok",
    "data": {
        "authorID": "a.tecfYc0hczapA4JP"
    }
}
2.2、创建组,因为权限是居于组的,一个组可以有多个用户,可以有多个记事本,组内的用户都可以编辑

请求: http://127.0.0.1:9001/api/1/createGroupIfNotExistsFor?apikey=7fc8333b224aae0a8dbe6281e9c8224652b451ded5620aef361330cf9325fcb2&groupMapper=group1

响应:

{
    "code": 0,
    "message": "ok",
    "data": {
        "groupID": "g.IQChnScQKpJaoNdd"
    }
}
2.3、创建组内的记事本,需要用到上一步返回的 groupID

请求: http://127.0.0.1:9001/api/1/createGroupPad?apikey=7fc8333b224aae0a8dbe6281e9c8224652b451ded5620aef361330cf9325fcb2&groupID=g.IQChnScQKpJaoNdd&padName=demo&text=hello world

响应:

{
    "code": 0,
    "message": "ok",
    "data": {
        "padID": "g.IQChnScQKpJaoNdd$demo"
    }
}
2.3、创建 Session,建立用户与组的关系,validUntil 是 session 的有效期,填一个未来的时间即可,authorId 是用户 ID

请求: http://127.0.0.1:9001/api/1/createSession?apikey=7fc8333b224aae0a8dbe6281e9c8224652b451ded5620aef361330cf9325fcb2&groupID=g.IQChnScQKpJaoNdd&authorID=a.tecfYc0hczapA4JP&validUntil=1593403932000

响应:

{
    "code": 0,
    "message": "ok",
    "data": {
        "sessionID": "s.420caf0c3fab1ad123afc11085609e5f"
    }
}
2.4、修改 settings 开启权限认证

在这里插入图片描述

保存后重启,再去访问/p/demo是无法访问的,界面显示 您没有访问这个记事本的权限,这说明权限起作用了,于是要用到之前生成的 sessionID,打开浏览器控制台进行设置

document.cookie = "sessionID=s.420caf0c3fab1ad123afc11085609e5f"

在这里插入图片描述

再次刷新,发现还是提示无权限

其实不能直接通过 /p/demo 访问 demo 记事本的,正确的访问方式是 /p/{padId},这里输入 /p/g.IQChnScQKpJaoNdd$demo 就可以访问到 demo 记事本了

注:如果想将这个记事本分享给其他用户,同时进行编辑,需要先创建用户(如果用户不存在),再建立新用户

4、HTTP API

API 提供的基本功能有

  • 创建/删除记事本(pad)
  • 授权/禁止访问记事本(pad)
  • 获取设置记事本内容

API 版本

可以通过 /api 查询当前版本

请求格式

1.8开始,可以通过GET或POST无差别地调用API端点。HTTP请求的格式为 /api/ A P I V E R S I O N / APIVERSION/ APIVERSION/FUNCTIONNAME。根据选择的请求方式(GET/POST),参数可以不同地传递

回应格式

响应是以下格式的有效JSON:

{
  "code": number,
  "message": string,
  "data": obj
}
  • code 返回码
    • 0 一切正常
    • 1 参数错误
    • 2 内部错误
    • 3 没有这样的功能
    • 4 没有或错误的API Key
  • message 状态消息。一切正常,否则包含错误消息
  • data 有效数据

数据类型

  • groupID 字符串,组的唯一ID。格式为g.16RANDOMCHARS,例如g.s8oes9dhwrvt0zif
  • sessionID 字符串,会话的唯一ID。格式为s.16RANDOMCHARS,例如s.s8oes9dhwrvt0zif
  • authorID 字符串,作者的唯一ID。格式为a.16RANDOMCHARS,例如a.s8oes9dhwrvt0zif
  • readOnlyID 字符串,是与记事本的只读关系的唯一ID。格式为r.16RANDOMCHARS,例如r.s8oes9dhwrvt0zif
  • padID 字符串,格式为GROUPID P A D N A M E , 例 如 , 组 g . s 8 o e s 9 d h w r v t 0 z i f 的 测 试 记 事 本 具 有 p a d I D g . s 8 o e s 9 d h w r v t 0 z i f PADNAME,例如,组g.s8oes9dhwrvt0zif的测试记事本具有padID g.s8oes9dhwrvt0zif PADNAMEg.s8oes9dhwrvt0zifpadIDg.s8oes9dhwrvt0zif$test
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的犟驴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值