诗词应用开发实战:随机诗词API接口参数与接入详解
2026/7/14 6:24:29 网站建设 项目流程

适用场景

在诗词学习App、智能屏幕、语音助手、文化教育类应用甚至个人博客中,经常需要随机展示一首古诗词来丰富内容。传统做法是本地维护一个庞大的诗词库,但更新和维护维护复杂度较高。通过调用随机诗词API,只需一次请求就能获得一首符合特定主题的古诗词,极大降低了存储和运维维护复杂度。

以下是一个典型场景:一个诗词爱好者小程序,首页每天展示一首“抒情”主题的诗词。后端每24小时从API获取一首并缓存到Redis,用户刷新时展示缓存内容。这种方案既保证内容新鲜,又不会因为高频调用触发限流。

接口能力边界

  • 接口地址https://v1.apizero.cn/api/shici(仅支持POST方法)
  • QPS限制:5次/秒。超出后返回429状态码,需要实现退避机制。
  • 主题筛选:支持以下10种主题,通过参数type选择:
    • 抒情、四季、山水、天气、人物、生活、节日、动物、植物、食物
  • 类型列表查询:通过参数action: "types"可获取所有主题枚举,该操作不消耗调用额度,适合在初始化时一次性拉取。

鉴权方式

调用时需要携带X-API-Key请求头,值为你在平台申请的API Key。建议通过环境变量注入,避免硬编码。示例如下:

export APIZERO_API_KEY="your_key_here"

然后在代码中读取$APIZERO_API_KEY。如果Key无效或缺失,接口返回401 Unauthorized。

请求参数详解

请求体为JSON对象,包含两个可选字段:

参数名类型必填描述
typestring主题标识,取值:shuqing、siji、shanshui、tianqi、renwu、shenghuo、jieri、dongwu、zhiwu、shiwu
actionstring固定值"types",返回主题列表(不消耗额度)
  • 若不传任何参数,接口随机返回任意主题的一首诗词。
  • 若只传type,返回该主题的随机诗词。
  • 若只传action: "types",返回主题枚举数组。
  • 同时传typeaction时,action优先级更高,仍返回主题列表,type被忽略。

curl接入示例

示例1:获取随机诗词(不指定主题)

curl -sS \ -X POST \ -H "X-API-Key: $APIZERO_API_KEY" \ -H "Content-Type: application/json" \ -d '{}' \ "https://v1.apizero.cn/api/shici"

示例2:获取“山水”主题随机诗词

curl -sS \ -X POST \ -H "X-API-Key: $APIZERO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"type": "shanshui"}' \ "https://v1.apizero.cn/api/shici"

示例3:获取主题类型列表(不消耗额度)

curl -sS \ -X POST \ -H "X-API-Key: $APIZERO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"action": "types"}' \ "https://v1.apizero.cn/api/shici"

返回结果解读

成功响应(HTTP 200)

{ "code": 200, "data": {}, "message": "success" }

注意:官方文档给出的示例中data为空对象。实际调用时,data字段会包含完整的诗词信息。根据接口文档,data对象通常包含以下字段(以实际返回为准,建议通过日志或调试工具查看):

字段名类型说明
titlestring诗词标题
authorstring作者
dynastystring朝代
paragraphsstring[]诗词正文(每句为数组元素)
typestring所属主题

类型列表响应(action=types)

{ "code": 200, "data": ["shuqing", "siji", "shanshui", ...], "message": "success" }

错误响应

  • 400 Bad Request:请求体格式错误(非JSON)或参数值非法。
  • 401 UnauthorizedX-API-Key缺失或无效。
  • 429 Too Many Requests:超过QPS限制,应等待至少200ms后重试。
  • 500 Internal Server Error:服务端异常,建议稍后重试。

工程化注意事项

1. API Key安全管理

  • 不要将Key硬编码在代码仓库中。使用环境变量、配置中心或密钥管理服务。
  • 在前端代码中直接调用时,Key会暴露给用户。建议由后端代理请求,前端通过自己的接口获取诗词数据。

2. 缓存策略

  • 由于QPS仅有5/s,高并发场景下必须加缓存。例如:
    • 定时任务:每10分钟调用一次,将结果存入Redis,设置过期时间10分钟。
    • 用户请求时:先读缓存,缓存未命中再调用API并回写缓存。
  • 对于非时效性场景(如每日一句),可预先缓存一批诗词,供一天使用。

3. 错误重试与降级

  • 网络波动或服务端5xx错误:采用指数退避重试(如第一次等待1s,第二次2s,第三次4s),最多重试3次。
  • 429限流:等待Retry-After头指定的时间(若有)或固定2秒后重试。
  • 若API持续不可用,可降级为本地备用诗词库。

4. 并发控制

  • 使用信号量或队列限制同一时刻的并发请求数,避免短时间内发出超过5个请求。
  • 在Node.js中可使用p-limit库,Python中可使用Semaphore

5. 参数校验

  • 调用前对type值进行白名单校验,避免无效值导致400错误。可借助action: "types"在应用启动时预拉取有效枚举。

6. 日志与监控

  • 记录每次请求的耗时、状态码、返回内容摘要,便于排查问题。
  • 监控错误率,当4xx/5xx比例超过阈值时触发告警。

参考文档

  • 接口文档页:https://apizero.cn/aidocs/shici
  • 原始Markdown文档:https://apizero.cn/aidocs/shici/raw.md

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询