使用Node.js搭建Api服务

使用Node.js搭建Api服务

2021年08月18日 阅读:8 字数:1345 阅读时长:3 分钟

博客网站需要用到一些数据服务,比如Live2d看板娘、个人音乐等,使用第三方不稳定,所以基于Node.js自己搭建Api服务。

博客网站需要用到一些数据服务,比如Live2d看板娘、个人音乐等,使用第三方不稳定,所以基于Node.js自己搭建Api服务。

数据来源于聚合数据、Github等社区 单节点,可下载源码自行搭建,https://gitee.com/timelessq/tl-api 

网站地址:https://api.timelessq.com/

目录结构

api
├─ .eslintrc
├─ config  // 数据库配置文件
├─ development.js // 开发环境下的入口文件
├─ mongodb-data // mongodb数据
│  ├─ bing.js
│  ├─ garbage.js
│  ├─ license.js
│  └─ postalcode.js
├─ nginx.conf // nginx 配置文件
├─ package.json
├─ pm2.json // pm2 配置文件
├─ production.js // 生产环境下的入口文件
├─ src
│  ├─ bootstrap // 启动自动执行目录
│  │  ├─ master.js // Master 进程下自动执行
│  │  └─ worker.js // Worker 进程下自动执行
│  ├─ config // 配置文件目录
│  │  ├─ adapter
│  │  │  ├─ cache.js // 缓存配置文件
│  │  │  ├─ logger.js // 日志配置文件
│  │  │  ├─ model.js // 数据库配置
│  │  │  ├─ session.js
│  │  │  └─ view.js // 模板引擎配置
│  │  ├─ adapter.js
│  │  ├─ config.js // 默认配置文件
│  │  ├─ config.production.js // 生产环境下的默认配置文件,和 config.js 合并
│  │  ├─ crontab.js // 定时任务
│  │  ├─ extend.js // 扩展
│  │  ├─ middleware.js // 中间件
│  │  └─ router.js // 路由
│  ├─ controller
│  │  ├─ azurlane // 碧蓝航线
│  │  │  ├─ ship.js
│  │  │  └─ spine.js
│  │  ├─ bangumi.js // 番剧
│  │  ├─ base.js
│  │  ├─ bilibili.js // 哔哩哔哩
│  │  ├─ district.js // 行政区划级联
│  │  ├─ garbage.js // 垃圾分类
│  │  ├─ index.js
│  │  ├─ license.js // 车牌信息查询
│  │  ├─ live2d // Live2d看板娘
│  │  │  ├─ base.js
│  │  │  ├─ get.js
│  │  │  ├─ lists.js
│  │  │  ├─ model.js
│  │  │  ├─ texture.js
│  │  │  └─ update.js
│  │  ├─ music // 音乐Api
│  │  │  ├─ netease.js
│  │  │  └─ tencent.js
│  │  ├─ postalcode.js // 邮政编码
│  │  ├─ time.js // 时间查询
│  │  ├─ wallpaper // 壁纸
│  │  │  ├─ bing.js
│  │  │  └─ index.js
│  │  └─ weather.js // 天气查询
│  ├─ extend
│  │  └─ context.js
│  ├─ logic // 校验层
│  │  ├─ azurlane
│  │  │  ├─ ship.js
│  │  │  └─ spine.js
│  │  ├─ district.js
│  │  ├─ image
│  │  │  └─ bing.js
│  │  ├─ license.js
│  │  ├─ live2d
│  │  │  ├─ index.js
│  │  │  ├─ model.js
│  │  │  └─ texture.js
│  │  ├─ music.js
│  │  ├─ postalcode.js
│  │  └─ weather.js
│  ├─ model // 数据模型
│  │  ├─ index.js
│  │  └─ wallpaper
│  │     ├─ bing.js
│  │     └─ chevereto.js
│  └─ utils
│     └─ crypto.js
├─ test
│  └─ index.js
├─ view
│  └─ index.html
└─ www // 静态资源
   ├─ azurlane-assets // 碧蓝航线SD小人
   ├─ bangumi // 番剧数据
   │  └─ data.json
   ├─ cascade // 行政区划
   │  ├─ areas.json
   │  ├─ cities.json
   │  ├─ pc-code.json
   │  ├─ pca-code.json
   │  ├─ pcas-code.json
   │  ├─ provinces.json
   │  └─ streets.json
   └─  live2d-assets // live2d模型

系统设计

  • 使用Node.js作为开发语言,以ThinkJS 3.0框架为基础
  • 数据库使用Mongodb存储Api用到的不规则数据
  • 缓存使用文件存储,暂时没有用Redis
  • 非RESTful规范
  • 文档使用Apifox管理

1、时间查询Api

基于lunar-javascript npm包实现阳历、农历、黄历、节日、星座以及节气等信息查询

2、动画番组信息

数据来源:https://github.com/bangumi-data/bangumi-data,提供按时间或标题查询番剧

3、天气预报

数据来源:https://www.nowapi.com

4、Live2D

提供指定或随机查询Live2D模型,模型主要有B站2233娘、药水制作师、超次元游戏:海王星

数据来源:https://github.com/Eikanya/Live2d-model

5、碧蓝航线

查询舰娘列表以及SD小人模型

模型来源:https://github.com/Pelom777/AzurLaneSD

 

其他的接口数据基本基于聚合数据的离线数据

后续功能规划

  1. 数据存储逐步迁移到MongoDB
  2. 新增成语大全信息查询接口,数据来源于聚合
  3. 新增星座信息查询接口
  4. 新增二维码生成接口
  5. 新增身份证号段归属查询接口
  6. 行政区划查询增加港澳台数据

更新日志

v1.0.2

2022-10-18

  • 【新功能】 开放QQ音乐接口,通过QQ号查询歌单

2022-07-24

  • 【新功能】 新增Bing必应每日壁纸接口
  • 【新功能】 新增Chevereto图床随机壁纸接口
  • 【优化】 使用MongoDB替换原来的文件存储
  • 解决 碧蓝航线舰娘列表,不输入name参数,结果为空问题

2022-06-13

  • 【新功能】 新增《碧蓝航线》手游舰娘列表查询接口
  • 【新功能】 新增《碧蓝航线》手游舰娘Spine小人模型查询接口
  • 【文档】 Api文档由Swagger迁移到Apifox

2022-03-20

  • 【新功能】 新增biilibili用户信息查询接口
  • 【新功能】 新增biilibili收藏夹列表查询接口
  • 【新功能】 新增biilibili收藏夹内容查询接口
  • 【新功能】 新增biilibili关注列表查询接口

v1.0.1

2021-10-06

  • 【新功能】 新增车牌号信息查询接口
  • 【优化】 添加logic,接口参数校验层
  • 【BUG】解决查询十二时辰黄历信息月份天数计算错误问题

2021-07-15

  • 【新功能】 新增垃圾分类查询接口
  • 【新功能】 新增邮政编码查询接口

2021-02-22

  • 【新功能】 新增番剧信息查询接口

v1.0.0

2020-10-08

  • 【新功能】 新增时间、农历信息查询接口

2020-08-19

  • 初始化项目,使用Node.js开发

推荐阅读

恰饭区

评论区 0

0/500

还没有评论,快来抢第一吧