一言·古诗词 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 即可。欢迎有兴趣的同学共同学习,提意见。

7305 次点击
所在节点    分享创造
58 条回复
pipijin
2018-08-06 11:29:25 +08:00
优秀
kran
2018-08-06 17:03:12 +08:00
看了这个帖子自己写了一个,30 多万的数据 us 级响应,sqlite 数据库
lhx2008
2018-08-06 17:34:48 +08:00
@kran 走 http 吗?其实我感觉时间主要还是看 http 框架和链路上的各种反代和防火墙了
sangmong
2018-08-06 18:04:05 +08:00
dyxang
2018-08-06 18:22:27 +08:00
楼主 good,用的是这个库吗,在这里: https://github.com/chinese-poetry/chinese-poetry
lhx2008
2018-08-06 18:45:06 +08:00
@dyxang 谢谢,看过这个,这个没有名句的数据,我自己在网上随便找的数据
sobigfish
2018-08-06 18:48:08 +08:00
字体看着虚, 用个开源的黑体?
dyxang
2018-08-06 19:01:54 +08:00
@sobigfish 黑体就没有古风的感觉了
楼主为何不用古体字,类似方正龙爪字体,或者文悦古典明朝体(非商用)
这是文悦古典明朝体的
sobigfish
2018-08-06 19:07:44 +08:00
@dyxang #28 因为版权问题-。- 所以我建议用开源的字体
dyxang
2018-08-06 19:10:58 +08:00
@sobigfish (非商用)
lhx2008
2018-08-06 19:22:50 +08:00
@dyxang
svg 用的是用户的系统字体,而不是我这边生成,svg 默认是楷体,如果没有是用雅黑或者其他系统字体。小众字体要有效果必须要用户电脑安装了字体。你可以在引用的时候修改 SVG 的 CSS,嵌入网络字体。
png 是我这边生成,用的是思源宋体,
lhx2008
2018-08-06 19:23:09 +08:00
@sobigfish 见上
lhx2008
2018-08-06 19:24:24 +08:00
font-family='KaiTi, "Segoe UI", "Lucida Grande", Helvetica, Arial, "Microsoft YaHei", FreeSans, Arimo, "Droid Sans","wenquanyi micro hei","Hiragino Sans GB", "Hiragino Sans GB W3", sans-serif'
kran
2018-08-06 22:13:00 +08:00
kran
2018-08-06 22:13:50 +08:00
@lhx2008 这点数据确实没必要要求数据库怎么样。
sevenQu
2018-08-06 23:38:26 +08:00
感觉挺好的,不知道为什么,我必须要翻墙才能看到你的网站和 api 返回,是我的原因吗?,ps:如果是返回是完整的诗会更好,总是一句经典的,我个人总想去看看全诗是什么
lhx2008
2018-08-07 09:22:34 +08:00
@sevenQu 没有被墙,可能是 dns 的问题吧,小众域名管理局的 dns 不给力,有机会还是换回主流域名吧
vjnjc
2018-08-07 12:12:02 +08:00
已 star。
请问楼主能部署在我的域名下嘛?买了一个域名不知道放点啥 0 0
vjnjc
2018-08-07 12:14:02 +08:00
再看了一下,svg 的效果很好啊,原来能这么用
lhx2008
2018-08-07 12:25:47 +08:00
@vjnjc 哈?我就是为了这个项目专门注册了个域名

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

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

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

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

© 2021 V2EX