这篇文章上次修改于 840 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

前言

之前开了一个关于一言API的坑,至今 (12.24) 还没填.于是我就想,至少,至少,在这个特殊的日子把他给初步完成.

目前姑且是收集了一些资源,如果给我自己的网站是够用了,但如果拿来当公共 API的话就显得有些相形见绌了.

万事开头难,总之先把核心逻辑部分给完成吧!

确定输出格式

返回类型肯定是 JSON 了,这不用多说.但问题是如何设置输出的值.

关于这一点,我之前参考了 hitokoto 的样式,但是我觉得不需要这么复杂,因为是我一个人运营的.

{
  "id": 7320,
  "uuid": "d97561d8-b4e9-46f5-addf-1d4d946dd946",
  "hitokoto": "千万丈的大厦总要有片奠基石,最初的爱好无可替代。",

  "type": "k",
  "from": "我的精神家园",

  "from_who": "王小波",

  "creator": "Damianyang",
  "creator_uid": 9192,
  "reviewer": 9975,
  "commit_from": "web",
  "created_at": "1620185683",
  "length": 24
}

我打算在这个基础上只留下核心部分,也就是变成这样

{
  "id": 7320,
  "hitokoto": "千万丈的大厦总要有片奠基石,最初的爱好无可替代。",

  "type": "k",
  "from": "我的精神家园",

  "from_who": "王小波",

  "length": 24
}
类型可能会进行二级细分,但大概就是这么一回事了!

确定数据存储类型

目前(本地调试)是采用静态 JSON 格式来存储数据的,我寻思数据量也不会很大,要不就别用数据库了.

的确数据库管理起来会更方便,但是目前我是懒得去搞了,可能以后会改成数据库查询.

代码实现

目前逻辑很简单

读本地 JSON 文件 => 转成多维数组 => 获取数组长度随机选择一个输出

文件方面采用对象来储存一组数据,因为键值对输出比较好看

其中 id 和 len 为整形,其他的为字符串.

优点:轻量,不依赖其他东西

最后输出格式如下:

{
  "ID": 1,
  "core": "身是菩提树,心如明镜台.时时勤拂拭,莫使有尘埃.",

  "type": "哲学",

  "from": "《坛经》",

  "author": "神秀",

  "len": 24
}

至此,核心部分基本完成,剩下的是数据迁移到数据库以及优化输出

重构优化

后期会优化的(也许大概可能说不定没准