Javascript Sendgrid v3 api返回错误的请求

Javascript Sendgrid v3 api返回错误的请求,javascript,ajax,sendgrid,Javascript,Ajax,Sendgrid,我正在尝试使用sendgrid V3 api将我们的用户添加到邮件列表中。我构造了下面的Ajax请求来满足他们的API,但是我不断得到一个错误请求。我省略了xhr.setRequestHeader,但我有一个有效的API键,它可以工作,因为省略它时,它返回403。现在,我只得到了400个坏的身体要求。我已经让我的请求体看起来和他们的例子一模一样,但我仍然被卡住了 更新了代码的工作示例和: 让我们看看你提出的请求,然后从那里开始。您向一个API发出请求并发送一些数据,作为内容类型:applica

我正在尝试使用sendgrid V3 api将我们的用户添加到邮件列表中。我构造了下面的Ajax请求来满足他们的API,但是我不断得到一个
错误请求。我省略了
xhr.setRequestHeader
,但我有一个有效的API键,它可以工作,因为省略它时,它返回403。现在,我只得到了400个坏的身体要求。我已经让我的请求体看起来和他们的例子一模一样,但我仍然被卡住了


更新了代码的工作示例和:


让我们看看你提出的请求,然后从那里开始。您向一个API发出请求并发送一些数据,作为
内容类型:application/json。API正在响应
400错误请求
。API返回400的原因是因为您发送的请求服务器不喜欢或无法读取/解析

您的代码还有一些其他问题:

  • v3上联系人API的端点为
    https://api.sendgrid.com/v3/contactdb/recipients
  • 您根本没有发送任何身份验证头。您可能无法在客户端执行此操作,因为这将是一个巨大的安全风险,将Sendgrid的API密钥公开给全世界

  • 谢谢你的回复,布兰登。“联系人”是一个打字错误。在我的代码中,它始终是
    /contactdb/
    ,并且错误仍然存在。我也有一个密钥的授权,但出于明显的原因,我把它从我的问题主体中排除了。还有其他想法吗?我能够重现这个问题并有一段工作代码,我会用它更新我的答案。Sendgrid API V3希望对你有所帮助!
    var sendgridData = 
      [
        {
           "marketing_emails": 0,
            "weekly_emails": 0,
            "email": userProfile.email,
            "first_name": "foo",
            "last_name": 'bar',
            "userid": 2,
        }
      ]
     $.ajax({
       method: 'POST',
       url: 'https://api.sendgrid.com/v3/contactdb/recipients',
       data: sendgridData,
       dataType: 'json',
       contentType: 'application/json',
     },
     success: 
     function(res)
     {
       console.log(1, res)
    
      Modal.close();
       },
       error:
         function(e)
         {
          Modal.close();
          console.log(1,e);
         }
     })
    
    var apiKey = 'Bearer [API KEY HERE]'
    
    var sendgridData = [
      {
        "marketing_emails": 0,
        "weekly_emails": 0,
        "email": 'someperson@example.com',
        "first_name": "foo",
        "last_name": 'bar',
        "userid": 2,
      }
    ]
    
    $.ajax({
      method: 'POST',
      url: 'https://api.sendgrid.com/v3/contactdb/recipients',
      data: JSON.stringify(sendgridData),
      dataType: 'json',
      headers: { 'Authorization': apiKey },
      crossDomain: true
    })
    .done(function(res) {
      console.log(1, res)
    })
    .fail(function (e) {
      console.log(2, e.status, e.responseText)
    })