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

使用GET/POST请求Edamam API失败,R报错‘must not be NULL’求助

解决Edamam API在R中请求失败的问题

问题根源

Edamam Recipes v2 API的食谱搜索接口要求使用GET请求,并将筛选参数(如mealType)作为URL查询参数传递,而非通过POST请求的JSON body提交。你的代码错误地使用了POST传递参数,且未在GET请求中包含必要的筛选条件,导致出现“must not be NULL”错误。

修正后的代码

library(httr)
library(jsonlite)

# 替换为你的真实ID和密钥
APP_ID = "XXXXXX"
APP_KEY = "XXXXXXXXXX"

api_endpoint = "https://api.edamam.com/api/recipes/v2"

# 构建包含所有必要参数的URL:app_id、app_key、mealType,以及v2版本必填的type参数
url = paste0(api_endpoint, 
             "?app_id=", APP_ID, 
             "&app_key=", APP_KEY,
             "&mealType=breakfast",
             "&type=public")

# 发送GET请求
tmp <- GET(url)

# 检查请求状态,失败时抛出明确错误
stop_for_status(tmp)

# 解析响应内容
appData <- content(tmp, "parsed")

关键修正点

  • 改用GET请求:Edamam的食谱搜索接口仅支持GET,POST请求不符合API规范
  • 添加必填参数type=public:v2版本API要求必须指定type参数,否则会返回参数缺失错误
  • 将筛选参数放入URL查询:mealType等筛选条件需要作为URL的查询参数传递,而非POST的body
  • 移除不必要的请求头:GET请求不需要设置Content-type: application/json头部

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:00:31