2017-02-22 2 views
0

나는 sendgrid V3 API를 사용하여 사용자를 메일 링리스트에 추가하려고합니다. API를 사용하기 위해 다음 Ajax 요청을 작성했지만 계속 bad request 오류가 발생합니다. 나는 xhr.setRequestHeader을 생략했지만 유효한 API 키를 가지고 있으며 작동하지 않습니다. 생략되었을 때 403을 반환하기 때문에 작동합니다. 이제는 잘못된 요청 본문에 대해 400 개를 얻었습니다. 내 요청 본문을 본보기처럼 보이게하고 여전히 붙어 있습니다.Sendgrid v3 api가 잘못된 요청을 반환합니다.

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); 
    } 
}) 

답변

1

Example request body from their website 코드의 작업 샘플을 업데이트하고 working jsfiddle :

var apiKey = 'Bearer [API KEY HERE]' 

var sendgridData = [ 
    { 
    "marketing_emails": 0, 
    "weekly_emails": 0, 
    "email": '[email protected]', 
    "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) 
}) 

하는의 당신이하고있는 요구를 살펴보고 거기에서 가자. API에 요청을 보내고 일부 데이터를 Content-Type: application/json;과 같이 보내고 있습니다. API가 400 Bad Request으로 응답 중입니다. API가 400을 반환하는 이유는 서버가 마음에 들지 않거나 읽을 수 없거나 파싱 할 수 없다는 요청을 보내기 때문입니다. 당신은 전혀 인증 헤더를 따라 전송하지 않을 https://api.sendgrid.com/v3/contactdb/recipients

    1. v3의 연락처 API의 엔드 포인트는 다음과 같습니다

      뿐만 아니라 코드를 잘못 다른 몇 가지가 있습니다. 이 클라이언트 측은 SendGrid 에 대한 API 키를 노출하는 엄청난 보안 위험이 될 수 있으므로으로이 클라이언트 측을 수행 할 수 없습니다.

  • +0

    Brandon에게 감사드립니다. "연락처"는 오타입니다. 필자의 코드에서는 항상/contactdb /를 사용하고 있으며 오류가 지속된다. 나는 또한 열쇠에 대한 승인을 받았지만 분명한 이유로 그것을 내 질문 본문에서 버렸다. 다른 아이디어? –

    +0

    문제를 재현 할 수 있고 작동하는 코드가 있으면 대답을 업데이트 할 것입니다. – brandon927