[開源]一言·古詩詞 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

相關文章
相關標籤/搜索