开箱即用,支持跨域的 hexo 博客 api
hexo-info-api
支持跨域、随意开关接口的 hexo 博客 api 插件。
原理
API 接口
基于 hexo.extend.generator.register()
注册一个 generator 将对应接口的路由与数据返回。
1 | const api = "API_FILE_NAME"; |
跨域访问
基于 hexo.extend.filter.register('server_middleware', ...)
注册一个 filter,将对应接口的路由与跨域访问的中间件绑定。
中间件的实现基于 senchalabs/connect。
1 | // 设置响应头与跨域 |
OS:这点东西 hexo 文档屁都没讲,又是扒拉源码,又是找文档(恼)
新增接口
TODO:在不更改 hexo-info-api
源码的情况下,新增接口
即直接将自定义的接口放入 博客文件夹/scripts
目录下即可加载到接口
目前的新增接口方法
在
node_modules/hexo-info-api/lib/api
目录下新增接口文件,文件名即为接口名编辑接口文件,参考以下示例
1 | /* hexo-info-api API module */ |
为规范化接口模块,接口模块的开头需要添加 /* hexo-info-api API module */
注释。
- 在
博客文件夹/_config.yml
中启用接口
1 | hexo_info_api: |
变量
在接口文件中,可以使用以下变量
locals
即为网站变量| 变量 | 描述 | 类型 | 备注 |
| —————————- | ———— | —————————————— | ————— |
|locals.posts
| 所有文章 | array of post objects | |
|locals.pages
| 所有分页 | array of page objects | 疑似不可用 |
|locals.categories
| 所有分类 | object,包含了站点全部的分类 | |
|locals.tags
| 所有标签 | array,包含了站点全部的标签 | |this
可以获取到外部的hexo
对象,即为全局变量
如果你有好的想法,欢迎提 issue 或 pr 以添加新的接口
使用方法
安装
1 | # npm |
配置
向 hexo 的配置文件 _config.yml 中添加以下内容
1 | hexo_info_api: |
运行 (测试)
1 | hexo s |
返回结果
这是 GET /api/getPostCount 接口的返回结果
1 | { |
其他接口对应结构请前往 Github 仓库 wiki 查看
At Last
Top img by Douglas Lopes on Unsplash