51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Hexo博客增加API接口(hexo-info-api)

前言 {#前言}

支持跨域、随意开关接口的 hexo 博客 api 插件hexo-info-api

响应头 {#响应头}

|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | Content-Type: application/json; charset=utf-8 Access-Control-Allow-Origin: <config.allowOrigin> Access-Control-Allow-Credentials: true |

数据将以 UTF-8 编码 json 格式返回

你可以从配置文件设置允许跨域访问的域名(设置为 * 为允许所有域名)

安装 {#安装}

|-------------------|------------------------------------------------------------------------------| | 1 2 3 4 5 | # npm npm install hexo-info-api --save # yarn yarn add hexo-info-api |

配置 {#配置}

向 hexo 的配置文件 _config.yml 中添加以下内容

|---------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | hexo_info_api: allowOrigin: "*" # 设置为 "*" 以允许所有源访问 (跨域访问 Access-Control-Allow-Origin) enable: # 启用你需要的 api 接口 (只有在这里启用的 api 才会生效) - getInfo - getPostCount - getPosts - getPostsByCategory - getPostsByCategoryId - getPostsByTag - getPostsByTagId - getPostByPath - getPostById - getCategories - getTags # 禁用默认 api (host:port/api/) 默认: false # 该 api 的作用为返回所有启用的 api 接口 disable_default_api: false |

运行 (测试) {#运行-测试}

|---------------|-------------------------------------------------------------| | 1 2 3 | hexo s #访问 http://localhost:4000/api/ 查看你启用的 api 接口 |

返回结果 {#返回结果}

这是 GET /api/getPostCount 接口的返回结果

|---------------------|------------------------------------------------------------| | 1 2 3 4 5 6 | { "type": "getPostCount", "data": { "count": 0 } } |

接口说明 {#接口说明}

  • 默认接口
    GET /api/ - 获取当前启用的 API 接口列表

例子:

|------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | { "type": "apiInfo", "data": { "enabled": [ "getInfo", "getPostCount", "getPosts", "getPostsByCategory", "getPostsByCategoryId", "getPostsByTag", "getPostsByTagId", "getPostByPath", "getPostById", "getCategories", "getTags" ] } } |

  • 获取网站信息
    GET /api/getInfo/ - 获取当前网站的信息(数据来源与 _config.yml)

例子:

|------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 12 | { "type": "getInfo", "data": { "title": "Hexo中文测试", "subtitle": "", "description": "", "author": "John Doe", "language": "en", "timezone": "", "url": "http://example.com" } } |

  • 获取文章数量
    GET /api/getPostCount/ - 获取当前网站的文章数量

例子:

|---------------------|-------------------------------------------------------------| | 1 2 3 4 5 6 | { "type": "getPostCount", "data": { "count": 10 } } |

  • 获取文章列表
    GET /api/getPosts/ - 获取当前网站的文章列表(所有文章)。返回数据.data.posts: Array

例子:

|------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 | { title: String, date: String, description: String, categories: Array, tags: Array, _path: String, _link: String, _id: String } |

例子:

|------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | { "type": "getPosts", "data": { "posts": [ { "title": "1", "date": "2022-09-06T01:24:03.000Z", "description": "", "categories": [ { "name": "test1", "_id": "cl7ps65yb0000x88d98gzczh3" }, { "name": "test2", "_id": "cl7ps65yd0003x88d7518aszd" } ], "tags": [ { "name": "test_tag1", "_id": "cl7ps65yc0001x88d71rr08su" }, { "name": "test_tag2", "_id": "cl7ps65yc0002x88d2kvegq0o" }, { "name": "test_tag3", "_id": "cl7ps65yd0004x88db7q32te3" } ], "_path": "2022/09/06/1/", "_link": "http://example.com/2022/09/06/1/", "_id": "cl7pldj300000p08detj8etxb" }, { "title": "2", "date": "2022-09-06T01:24:04.000Z", "description": "", "categories": [], "tags": [], "_path": "2022/09/06/2/", "_link": "http://example.com/2022/09/06/2/", "_id": "cl7pldj340001p08d6o7a7z1w" }, { "title": "Hello World", "date": "2022-09-06T01:22:20.002Z", "description": "", "categories": [], "tags": [], "_path": "2022/09/06/hello-world/", "_link": "http://example.com/2022/09/06/hello-world/", "_id": "cl7pldj3h0009p08dcmvx29lk" } ] } } |

  • 获取分类下的文章列表
    GET /api/getPostsByCategory/:category - 获取当前网站的文章列表(指定分类下的文章)

例子:

|------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | { "type": "getPostsByCategory", "data": [ { "title": "1", "date": "2022-09-06T01:24:03.000Z", "description": "", "categories": [ { "name": "test1", "_id": "cl7ps65yb0000x88d98gzczh3" }, { "name": "test2", "_id": "cl7ps65yd0003x88d7518aszd" } ], "tags": [ { "name": "test_tag1", "_id": "cl7ps65yc0001x88d71rr08su" }, { "name": "test_tag2", "_id": "cl7ps65yc0002x88d2kvegq0o" }, { "name": "test_tag3", "_id": "cl7ps65yd0004x88db7q32te3" } ], "_path": "2022/09/06/1/", "_link": "http://example.com/2022/09/06/1/", "_id": "cl7pldj300000p08detj8etxb" } ] } |

  • 获取分类 ID 下的文章列表
    GET /api/getPostsByCategoryId/:categoryId - 获取当前网站的文章列表(指定分类ID下的文章)

例子: (与 获取分类下的文章列表 返回的数据相同)

  • 获取标签下的文章列表
    GET /api/getPostsByTag/:tag - 获取当前网站的文章列表(指定标签下的文章)

例子:

|------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | { "type": "getPostsByTag", "data": [ { "title": "1", "date": "2022-09-06T01:24:03.000Z", "description": "", "categories": [ { "name": "test1", "_id": "cl7ps65yb0000x88d98gzczh3" }, { "name": "test2", "_id": "cl7ps65yd0003x88d7518aszd" } ], "tags": [ { "name": "test_tag1", "_id": "cl7ps65yc0001x88d71rr08su" }, { "name": "test_tag2", "_id": "cl7ps65yc0002x88d2kvegq0o" }, { "name": "test_tag3", "_id": "cl7ps65yd0004x88db7q32te3" } ], "_path": "2022/09/06/1/", "_link": "http://example.com/2022/09/06/1/", "_id": "cl7pldj300000p08detj8etxb" } ] } |

  • 获取标签 ID 下的文章列表
    GET /api/getPostsByTagId/:tagId - 获取当前网站的文章列表(指定标签ID下的文章)

例子: (与获取标签下的文章列表相同)

  • 获取指定路径的文章数据
    GET /api/getPostByPath/:path - 获取指定路径的文章数据

例子: api/getPostByPath/yyyy/mm/dd/hello-world/

|------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 12 | { "type": "getPostByPath", "data": { "title": "Hello World", "date": "2022-09-06T01:22:20.002Z", "description": "", "categories": [], "tags": [], "content": "...html document...", "_id": "cl7pldj3h0009p08dcmvx29lk" } } |

  • 获取指定 ID 的文章数据
    GET /api/getPostById/:id - 获取指定 ID 的文章数据

例子: (与 获取指定路径的文章数据 返回的数据相同)

  • 获取分类列表
    GET /api/getCategories/ - 获取分类列表

例子:

|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 | { "type": "getCategories", "data": [ { "name": "test1", "_id": "cl7ps65yb0000x88d98gzczh3" }, { "name": "test2", "_id": "cl7ps65yd0003x88d7518aszd" } ] } |

  • 获取标签列表
    GET /api/getTags/ - 获取标签列表

例子:

|------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 | { "type": "getTags", "data": { "tags": [ { "name": "test_tag1", "_id": "cl7ps65yc0001x88d71rr08su" }, { "name": "test_tag2", "_id": "cl7ps65yc0002x88d2kvegq0o" }, { "name": "test_tag3", "_id": "cl7ps65yd0004x88db7q32te3" } ] } } |

接口文档访问地址 {#接口文档访问地址}

API Interface CN


赞(2)
未经允许不得转载:工具盒子 » Hexo博客增加API接口(hexo-info-api)