Mailchimp API返回'INVALID RESOURCE'错误,email_address为空求助
问题:Mailchimp API 返回 "email_address 不能为空" 错误,但已从请求体获取邮箱
我已从请求体中获取email并赋值给email_address,但Mailchimp API仍返回错误:
Error 404 INVALID RESOURCE
终端显示的具体错误信息:
type: 'https://mailchimp.com/developer/marketing/docs/errors/', title: 'Invalid Resource', status: 400, detail: "The resource submitted could not be validated. For field-specific details, see the 'errors' array.", errors: field: 'email_address', message: 'This value should not be blank.'
以下是我的app.js代码:
const express=require("express"); const bodyParser=require("body-parser"); const path = require("path"); const https=require("https"); const app=express(); app.use(bodyParser.urlencoded({extended:true})) app.use(express.static(path.join(__dirname,'public'))); app.get("/",function(req,res){ res.sendFile(__dirname+"/index.html"); }) app.post("/",function(req,res){ var firstName=(req.body.firstname); var lastname=(req.body.lastname); var email= (req.body.email); var data={ members: [ { email_address:email, //I have named the input tag as email satus:'subscribed', merge_fields:{ FNAME: firstName, LNAME: lastname } } ] } const url="https://us21.api.mailchimp.com/3.0/lists/{list-id}/members" const JSONData=JSON.stringify(data); const options={ method: "POST", auth: "THIRSTYMOB:{api-key}" } const request=https.request(url,options,function(response){ console.log("running"); response.on("data",function(data){ console.log("running"); console.log(JSON.parse(data)); }) }) request.write(JSONData); request.end(); }); app.listen("5000",function(req,res){ console.log("listening on"); });
我已尝试从请求体获取email并存储到email_address中,但仍提示该字段为空,请问问题出在哪里?
问题排查与解决
1. 关键拼写错误:satus 应为 status
你在构造成员数据时,把订阅状态的字段名拼写成了 satus,而Mailchimp API要求的正确字段名是 status。这个拼写错误会导致API无法正确解析你的请求结构,进而误判 email_address 字段为空。
修正后代码片段:
{ email_address: email, status: 'subscribed', // 修正拼写错误 merge_fields: { FNAME: firstName, LNAME: lastname } }
2. 验证请求体数据是否正确获取
在POST路由中添加日志,确认后端是否真的拿到了邮箱值:
app.post("/",function(req,res){ var firstName=req.body.firstname; var lastname=req.body.lastname; var email= req.body.email; // 添加日志验证数据 console.log("获取到的邮箱:", email); console.log("获取到的名:", firstName); console.log("获取到的姓:", lastname); // 后续数据构造和请求代码... })
如果日志显示email为空,需要检查前端表单:
- 确保输入邮箱的input标签
name属性值为email(大小写严格匹配,req.body的键名和input的name完全一致) - 确认表单的
method属性为POST,action属性指向后端的/路由
3. 其他必要修正
- 替换URL中的
{list-id}为你真实的Mailchimp列表ID - 替换
{api-key}为你真实的Mailchimp API密钥 - 确认API密钥的区域后缀(如us21)和URL中的区域一致
内容的提问来源于stack exchange,提问作者thirstymob
相关产品推荐
相关产品推荐

