2017-03-28 2 views
0

Ich versuche, die Asana-API zu verwenden, um eine Aufgabe mit einer POST-HTTP-Anfrage zu erstellen, aber ich bekomme immer eine 400 schlechte Anfrage als Antwort. mit (einer GET-Anfrage)Erstellen einer Asana Aufgabe mit einer POST-HTTP-Anfrage

ich es geschafft, Daten von der Asana-api zu bekommen, aber ich habe Probleme Daten Asana mit (einer POST-Anfrage)

Ich bin mit dem ‚Antrag‘ Modul sendet der aPI-Aufruf

hier ist die Fehlermeldung zu tun:

`{"errors":[{ 
     "message":"Could not parse request data,invalid JSON", 
     "help":"For more information on API status codes and how to handle them, 
     read the docs on errors: https://asana.com/developers/documentation/getting-started/errors"} 
]}` 

hier ist mein Code:

testTask(){ 
    var taskName = "Test Name for a Test Task" 
    var workspaceID = "123456789" 
    var projectID = "123456789" 
    var assigneeID = "123456789" 
    var parentID = null 
    this.createTask(taskName, workspaceID, projectID, assigneeID, parentID) 
} 

createTask(taskName, workspaceID, projectID, assigneeID, parentID){ 
    var token = "0/1234abcd5678efgh9102ijk" 
    var bearerToken = "Bearer " + token 
    var task = { 
     data: { 
     assignee: "me", 
     notes: "test test test test", 
     workspace: workspaceID, 
     name: taskName, 
     projects: [projectID], 
     parent: parentID 
     } 
    } 
    var options = { 
     "method" : "POST", 
     "headers" : {"Authorization": bearerToken}, 
     "contentType": "application/json", 
     "payload" : JSON.stringify(task) 
    } 
    try { 
     var url = "https://app.asana.com/api/1.0/tasks"; 
     request.post(url, options, function optionalCallback(err, httpResponse, body) { 
     if (err) { 
      return console.error('upload failed:', err); 
     } 
      console.log('Upload successful! Server responded with:', body); 
     }); 
    } 
    catch (e) { 
      console.log(e); 
    } 

} 

Ich habe auch versucht, eine andere Implementierung:

createTask(){ 
    var token = "0/1234abcd5678efgh9102ijk" 
    var bearerToken = "Bearer " + token 

    var options = { 
     "method" : "POST", 
     "headers" : {"Authorization": bearerToken}, 
    } 
    try { 
     request.post("https://app.asana.com/api/1.0/tasks?workspace=1234567&projects=765534432&parent=null&name=taskName&assignee=me", options, function optionalCallback(err, httpResponse, body) { 
     if (err) { 
      return console.error('upload failed:', err); 
     } 
      console.log('Upload successful! Server responded with:', body); 
     }); 
    } 
    catch (e) { 
      console.log(e); 
    } 

} 

Antwort

1

Basierend auf den Beispielen durch das Anforderungsmodul zur Verfügung gestellt, wie es scheint, dass Ihre Optionen verwenden Objekt payload als Schlüssel, aber es sollte body sein.

+0

Ich aktualisierte meine Frage durch Hinzufügen einer anderen Implementierung, die ich versuchte, wo ich keine Nutzlast verwendet habe und ich habe den gleichen Fehler – AziCode

+1

Ich bin nicht vertraut mit diesem Modul, so kann nicht die beste Hilfe sein, um es zu beheben. Haben Sie versucht, die [Asana Node Client-Bibliothek] (https://github.com/Asana/node-asana) zu verwenden? Hier ist ein Beispiel für eine CURL-Anfrage, die funktioniert, um eine Aufgabe zu senden: 'curl --request POST -H" Autorisierung: Bearer 0/c12345 "\ https://app.asana.com/api/1.0/tasks \ -d "workspace" = "12345" \ -d "name" = "Aufgabe erstellen" – Jeff

+1

Sie können keine POST-Anfrage machen und die Daten in die Abfrageparameter eingeben. Sie müssen in den Körper aufgenommen werden. "body": JSON.stringify (Aufgabe) – Mark

Verwandte Themen