authlib-injector
authlib-injector copied to clipboard
[proposal] 启动器公告
概述
该提案为验证服务器向启动器推送公告制定了规范。
格式
公告包含在 meta
里的 notice
属性中,其格式如下:
{
"content": "公告文本",
"lastUpdate": "最后更新时间(可选)"
}
- 公告文本
content
是一段纯文本。文本可以有多行,使用 LF 作为换行符。 - 最后更新时间
lastUpdate
是一个符合 ISO 8601 格式的日期时间,如2011-03-21T00:18:56Z
。
下面给出一个完整的例子:
{
"meta": {
"notice": {
"content": "欢迎来到某服务器\n网站:https://example.com/\nQQ群:123456789",
"lastUpdate": "2018-12-01T13:16:17Z"
},
...
},
...
}
启动器实现时的注意点
- 建议将文本中的 URL 识别为超链接,以便用户直接点击访问。
- 建议将公告显示在启动器首屏上,让用户一眼就能看到其内容。
- 显示最后更新时间时,注意将其转换为当地时间。
- 可以通过最后更新时间的变化,来提示用户公告内容有改动。
验证服务器实现时的注意点
- 公告内容中,换行符使用 LF。
- 如果公告中包含 URL,且 URL 较长,则可以考虑使用短链接。
欢迎诸位就本提案提出意见。
lastUpdate
为什么不用 Unix 时间戳?方便读取,不会有解析问题,更不会有时区问题。
@andylizi 我所使用的日期时间格式也是标准的,各语言的类库应该都提供了格式化函数。而且和 UNIX 时间戳相比,ISO 8601 是人类可读的。至于时区的问题,字符串末尾的 Z 代表的就是 UTC 时区。
我觉得可以像error一样,提供一个机器可读(Unix时间戳)和一个人类可读(按服务器所在时区计算)来提供公告
我觉得可以像error一样,提供一个机器可读(Unix时间戳)和一个人类可读(按服务器所在时区计算)来提供公告
没有必要,只要统一采用UTC时间就行。
lastUpdate
为什么不用 Unix 时间戳?方便读取,不会有解析问题,更不会有时区问题。
同意,API是放机器读取的,Unix时间戳无非是最好的选择,让启动器自行将timestamp转为可读时间即可
那就不规定时区好了,反正 ISO 8601 里自己带时区信息。