使用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
相关产品推荐
相关产品推荐

