一言·古诗词 API,随机返回一条古诗词名句,支持 svg/json/png/txt 返回, Vert.x 异步框架 + Redis 开发,毫秒级稳定响应。 [开源]

2018-08-05 21:47:14 +08:00
 lhx2008



简介

古诗词·一言 API 是一个可以随机返回一句古诗词名句的接口。(可刷新本页查看效果)

具有以下特点:

  • 快:使用 Vert.x Java 异步框架开发,使用 Redis 数据库,确保毫秒级稳定响应。
  • 多:收录将近 10000 条古诗词名句
  • 全:支持 svg / txt / json / png 调用,满足你在任何地方的调用需求
  • 准:可以根据你的喜好,在指定的分类中进行随机返回

项目首页:https://gushi.ci

项目 Github: https://github.com/xenv/gushici


API 举例

API 地址格式(仅支持 https)

https://api.gushi.ci/{一级分类}/{二级分类(可选)}.{返回格式(可选)}

查看所有目前支持的分类:https://api.gushi.ci/

目前支持的后缀:.svg .txt .png .json 不加后缀默认返回 json

例子:SVG 调用
<img src="https://api.gushi.ci/all.svg">

SVG 后缀是我们推荐的最优调用方案,可以在部分论坛、任何博客、小程序内无损直接调用,并且可以一定程度上控制样式。缺点是部分老旧浏览器不支持。

其他调用方案见:https://gushi.ci

闲话

无意中了解到 hitokoto API,感于没有古诗词方面的 API,便想自己动手撸一个。并且,在返回结果的类型上,做了更多大胆的尝试。可以说是很有创新的。

技术栈上,第一次尝试 使用 Vert.x 开发应用,整个开发耗时两天,Vert.x 整体来说性能确实不错,响应时间一般在 15ms 以内,而本地则在 5ms 以内。但是相关生态确实不完善。异步编程也带来了更多的 bug,对于调试来说也是一个不小的挑战。

数据库我直接选择了 Redis,原因一个是为了追求极速的响应速度,第二是数据一般没有什么变化,查询也简单,没有必要用 mysql 等落地。直接从 Python 数据源采集发到 redis 即可。欢迎有兴趣的同学共同学习,提意见。

7319 次点击
所在节点    分享创造
58 条回复
E1n
2018-08-07 13:20:33 +08:00
不错👍
vjnjc
2018-08-07 14:21:22 +08:00
@lhx2008 前阵子脑袋一热买了个域名,现在没东西放。请问楼主我能编译下你的源码,然后挂我自己域名下嘛?(你要是不介意的话
lhx2008
2018-08-07 15:38:09 +08:00
@vjnjc GPL 协议的,你自己可以编译运行来玩啊,只是不能卖给别人。
我没有提供完整的古诗词数据在 github 上面,不过代码是没问题的。所以你自己玩还要自己采集下数据。
lhx2008
2018-08-07 15:47:12 +08:00
@vjnjc 或者你自己直接用 nginx 反代我的 api,哈哈
vjnjc
2018-08-07 17:22:11 +08:00
@lhx2008 好的,那我自己编译一份~
sangmong
2018-08-08 17:20:10 +08:00
想要整首诗。。。类似西窗烛那种
x7395759
2018-08-08 17:46:10 +08:00
太强了
lemcon
2018-08-10 00:16:12 +08:00
特地登录一个 n 年前的账号上来狂顶楼主
lemcon
2018-08-10 00:16:35 +08:00
楼主,什么时候能加关键词呀?
lhx2008
2018-08-10 00:21:19 +08:00
@lemcon 谢谢,会考虑提供更多标签(分类)和更加智能的显示,但是根据关键词搜索结果这个,没有在计划内,不过你也可以自己稍微改一下来玩玩。(只采集你想要的关键词的诗导入就可以)
keller
2018-08-10 09:34:32 +08:00
无法访问此网站
gushi.ci 的响应时间过长。
lhx2008
2018-08-10 09:39:30 +08:00
@keller 能给我看下 ping 的结果吗,看看解析到哪里去了
lhx2008
2018-08-10 09:44:21 +08:00
@keller gushi.ci 是静态页面,不存在响应时间过长。。
lhx2008
2018-08-10 10:03:39 +08:00
@keller

@sevenQu

项目首页更换到了阿里云香港 oss,原来是东京机房,现在不知道会不会访问正常了
ibegyourpardon
2018-08-11 23:16:56 +08:00
svg 在线是用什么生成的……
lhx2008
2018-08-11 23:19:36 +08:00
@ibegyourpardon 在浏览器打开 svg,右键查看源代码你就懂了。
ibegyourpardon
2018-08-12 09:36:21 +08:00
@lhx2008 噗……

可是那 PNG 就实在看不懂了,这总得实时生成绘图吧。
lhx2008
2018-08-12 09:39:21 +08:00
@ibegyourpardon 离线绘图然后丢进 redis,实时太慢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/477095

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX