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

一言·古诗词 API

(掘金会自动替换图片,因此不会自动换,没办法)java

简介

古诗词·一言API 是一个能够随机返回一句古诗词名句的接口。具备如下特色:git

  • 快:使用 Vert.x Java 全异步框架开发,使用Redis数据库,确保毫秒级稳定响应。
  • 全:支持 svg / txt / json / png 调用,知足你在任何地方的调用需求
  • 准:能够根据你的喜爱,在指定的分类中进行随机返回

本仓库是该项目的开源代码仓库,仅提供测试数据,其他数据请自行采集。github

项目首页:gushi.ciredis

GitHub首页:github.com/xenv/gushic…数据库

安装

  1. 根据 Maven 安装依赖json

  2. maven package 可打成 Jar 包服务器

  3. 配置 redis,导入 dump.rdb 数据 (放到 redis 目录下,重启 redis,若是原来有这个文件请自行导出数据再替换,原有数据会所有清除)框架

  4. 运行:异步

    1. 服务器运行 java -server -jar yiyan-1.0-fat.jar -conf conf.json conf.json从下面能够复制出来本身配
    2. IDE运行 启动类 io.vertx.core.Launcher 参数 run ma.luan.yiyan.MainVerticle -conf src/main/resources/conf.json
  5. 若是要自行采集数据,请仿照原有 redis 中的 key 格式采集,log自动添加,help为可选,须要本身填充 json 和 img 两个 key 集。古诗词数据每一个分类一个 set,set的内容是 json 或者 base64 加密的图片。其余细节请自行查看源码。maven

使用

见 Github

技术说明

  1. MainVerticle 用来部署其余 Verticle
  2. ApiVerticle 为核心部分,负责处理请求
  3. DataService 和 LogService 负责提供查询服务
  4. ConvertUtil 负责转码
  5. Service 没有使用 Service Proxy,所以无需额外生成代码。

更新历史

  • 2018.08.06 1.1:
    1. 引入前缀树,使分类检索效率由 O(n) (n为全部分类数) 变为 O(L) (L为分类级数)。 缺点是空间复杂度由 O(n) 变为 O(nL),代码复杂度增长60行
    2. 优化了正则匹配获取地址参数的逻辑
    3. 正确加入了全局的错误处理(包括 Router 和 EventBus)
  • 2018.08.05 1.0:初始版本,支持 4 种格式返回,支持按分类搜索

关于项目

这是个人我的项目,目的是为了弘扬中国传统文化。

名句数据由古诗文网收录整理,特此感谢。

如有任何建议,或者有工做实习的机会(本人大学在读),请联系 meetlhx#qq.com

若您对本人的其余做品或者文章感兴趣,请访问个人博客:luan.ma

相关文章
相关标签/搜索