准备自己做个一言 API,需要一个数据库(单张表格也勉强算是吧
呐呐,我跟你讲,通常只有水文里我才会配音乐?
常见的数据库有 SQL 系的 MySQL、MariaDB,微软家的 Access(这个相信大家小学电脑课都折腾过吧
SQL + PHP 的架构是目前 web 开发最常见的,并且拥有大量相基于二者的开源项目,比如本博客使用的 WordPress。然而 SQL 并没有什么好的的可视化操作工具,对于如此简单的表单数据,其实犯也不上折腾这么麻烦的东西啦
Access 作为 Microsoft Office 组件之一,可视化操作自然很方便,但是 web 开发中使用的话需要搭配微软自家的 ASP 作为网站后台脚本语言,而 ASP 通常又得运行在微软家的 IIS 上,据说微软这一套产品性能都很高。然而我服务器并不是 Windows 的,pass。
Lowdb,暂时还不会用...
忽然想到 R 语言里面常用 read.table
函数读取 CSV 表格,何不试试用 PHP 读取呢?
看了一下其实已经有现成的轮子了,PHP 中有 'fgetcsv' 这个函数可以读取 CSV 文件(当然喽你要直接读取 xlsx 文件也不是不行,有个叫 PHPExcel 的 library 就可以)。下面就是我将 CSV 导入到 PHP array 的方法:
// 读取 csv 文件
$file = fopen("hitokoto.csv","r");
// 抽取 csv 第一行,准备作为 key
$headers = fgetcsv($file,0);
// 初始化 array
$data = array();
// 通过 fgetcsv 逐行将抽取 csv 数据写入 array
while ($row = fgetcsv($file,0)) {
// 将第一行的 key 与 value 对应
$data[] = array_combine($headers, $row);
}
// 关闭 csv 文件
fclose($file);
// 打印 array
var_dump($data);
fgetcsv
的详细参数可以参考文档。注意在 PHP 5.1.0 之后如果要忽略第二个参数 length
必须将其设为 0,否则报错。Excel 默认导出的分隔符与fgetcsv
默认的分隔符一样都是逗号,所以第三个参数留空即可。
用以上方法做了一个一言接口,下面是食用方法:
接口:https://api.2heng.xin/hitokoto/
可选参数:
参数 | 返回 |
---|---|
encode=json | 返回用unicode转码的json文本 |
encode=text | 返回不用unicode转码的json文本 |
id=x | 按 id 获取,x ∈ Z⁺ |
参数添加方法:
第一个参数前面加上 ?
添加至接口后:https://api.2heng.xin/hitokoto/?encode=text
第二个参数与第一个参数用 &
分隔:
https://api.2heng.xin/hitokoto/?encode=text&id=1
如何在网页中调用?参考我的这篇文章。
以上的句子大部分是网上的,并不是很满意,以后二刷樱花庄的时候再自己整理吧,计划做成双语版。