You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python requests模块获取特定分类随机单词?API调用出错求助

问题解决:获取分类随机单词的API调用错误修复

问题分析

你的代码触发异常,核心原因是当前请求的API端点参数规则不符合该Heroku随机单词API的要求:原/word端点不支持category参数,且你使用的复数分类名(fruits)也不符合API的参数规范,导致返回错误信息而非预期的单词列表,最终引发解析或选择逻辑的异常。

解决方案

步骤1:先定位具体错误(可选但推荐)

修改异常处理逻辑,捕获并打印具体错误信息和响应内容,便于快速排查问题:

import requests
import random

try:
    url = "https://random-word-api.herokuapp.com/word?number=1&category=fruits"
    response = requests.get(url)
    # 主动检查请求状态码,失败时抛出异常
    response.raise_for_status()
    words = response.json()
    random_word = random.choice(words)
    print(random_word)
except Exception as e:
    print(f"错误详情: {e}")
    print(f"API响应内容: {response.text}")

运行后会看到类似错误详情: Invalid category的提示,明确问题出在分类参数或端点选择上。

步骤2:修正API请求逻辑

该Heroku API获取分类单词的正确方式是使用/all端点,且分类名需使用单数形式(如fruit而非fruits)。修改后的代码如下:

import requests
import random

try:
    # 使用/all端点获取对应分类的完整单词列表,分类名用单数
    url = "https://random-word-api.herokuapp.com/all?category=fruit"
    response = requests.get(url)
    response.raise_for_status()
    words = response.json()
    # 从分类单词列表中随机选取一个
    random_word = random.choice(words)
    print(random_word.capitalize())
except Exception as e:
    print(f"获取API数据失败: {e}")

此代码会正确返回随机水果名称(如Apple、Orange)。

补充说明

  • 该API支持的有效分类(单数形式)包括:fruit、color、animal、adjective、verb等。
  • 使用response.raise_for_status()可以在API返回错误状态码(如404、500)时主动抛出异常,避免后续逻辑处理无效数据。

内容的提问来源于stack exchange,提问作者DEEPINDER SINGH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 19:43:15