Etherpad 是一个基于 nodejs
的在线文档编辑器,服务端性能可以得到保证,多个客户端的操作是即时同步的,而且对文档数据提供了存储的支持。
命令行进行项目根目录后,运行 /bin/run.sh
,项目即可运行到 127.0.0.1:9001
,输入 /admin
可进入管理员界面进行配置管理(开启 admin
管理界面需要将 settings.json
中的 users
注释去掉)。在管理员界面修改 settings
后可进行保存和重启。
默认情况下,一个记事本能被任何人编辑,只要拿到 URL 就可以
要进行权限控制,只有指定的用户才能编辑,接口都是基于 HTTP 的,每个接口都有一个默认参数 apikey
,它的值在第一次启动时生成在 APIKEY.txt
中。
请求: http://127.0.0.1:9001/api/1/createAuthorIfNotExistsFor?apikey=7fc8333b224aae0a8dbe6281e9c8224652b451ded5620aef361330cf9325fcb2&name=Michael&authorMapper=7
响应:
{
"code": 0,
"message": "ok",
"data": {
"authorID": "a.tecfYc0hczapA4JP"
}
}
请求: http://127.0.0.1:9001/api/1/createGroupIfNotExistsFor?apikey=7fc8333b224aae0a8dbe6281e9c8224652b451ded5620aef361330cf9325fcb2&groupMapper=group1
响应:
{
"code": 0,
"message": "ok",
"data": {
"groupID": "g.IQChnScQKpJaoNdd"
}
}
请求: 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"
}
}
请求: 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"
}
}
保存后重启,再去访问/p/demo是无法访问的,界面显示 您没有访问这个记事本的权限,这说明权限起作用了,于是要用到之前生成的 sessionID,打开浏览器控制台进行设置
document.cookie = "sessionID=s.420caf0c3fab1ad123afc11085609e5f"
再次刷新,发现还是提示无权限
其实不能直接通过 /p/demo 访问 demo 记事本的,正确的访问方式是 /p/{padId},这里输入 /p/g.IQChnScQKpJaoNdd$demo 就可以访问到 demo 记事本了
注:如果想将这个记事本分享给其他用户,同时进行编辑,需要先创建用户(如果用户不存在),再建立新用户
API 提供的基本功能有
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
}
数据类型