【问题标题】:Creating an Asana Task using a POST http request使用 POST http 请求创建 Asana 任务
【发布时间】:2017-03-28 04:24:08
【问题描述】:

我正在尝试使用 asana-api 通过 POST http 请求创建任务,但我不断收到 400 错误请求作为响应。

我设法使用(一个 GET 请求)从 Asana-api 获取数据,但是我在使用(一个 POST 请求)向 Asana 发送数据时遇到问题

我正在使用“请求”模块进行 api 调用

这是错误信息:

`{"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"}
 ]}`

这是我的代码:

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

}

我也尝试了不同的实现:

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

}

【问题讨论】:

    标签: javascript asana asana-api


    【解决方案1】:

    根据请求模块提供的示例,您的选项对象似乎使用payload 作为键,但它应该是body。

    【讨论】:

    • 我通过添加另一个我尝试过的实现来更新我的问题,我没有使用有效负载并且我得到了同样的错误
    • 我不熟悉这个模块,所以可能不是解决它的最佳帮助。您是否尝试过使用Asana node client library?下面是一个用于 POST 任务的 CURL 请求示例:curl --request POST -H "Authorization: Bearer 0/c12345" \ https://app.asana.com/api/1.0/tasks \ -d "workspace"="12345" \ -d "name"="testing task creation"
    • 您不能执行 POST 请求并将数据放入查询参数中。它们需要包含在正文中。 “正文”:JSON.stringify(任务)
    • @Mark 非常感谢,您能否回答这个问题,以便我选择它作为正确答案,以帮助可能遇到相同问题的其他人。
    • 杰夫在这里的答案正是答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    相关资源
    最近更新 更多