2017-06-02 1 views
0

J'essaie de travailler avec l'API Asana au fur et à mesure que j'apprends React et Redux. J'ai été capable d'obtenir des données de l'API Asana en utilisant fetch() jusqu'à présent, mais j'ai du mal à poster une tâche.Publication d'une tâche Asana à l'aide de fetch

Voici le code que je utilise:

const options = (type, data) => { 
 
    const defaultHeaders = { 
 
     'Authorization': `Bearer ${apiKey}`, 
 
     'Asana-Fast-Api': 'true', 
 
     } 
 
    switch(type) { 
 
    case 'get': 
 
     return { 
 
     headers: defaultHeaders, 
 
     } 
 
    case 'post': 
 
     const body = JSON.stringify(data) 
 
     console.log(body); 
 
     return { 
 
     method: 'POST', 
 
     headers: defaultHeaders, 
 
     contentType: 'application/json', 
 
     body: body, 
 
     } 
 
    default: 
 
     return { 
 
     headers: defaultHeaders, 
 
     } 
 
    } 
 
}; 
 

 
const asanaUrl = (props) => { 
 
    const numOfProps = props.length; 
 
    switch (numOfProps) { 
 
    case 3: 
 
     return `https://app.asana.com/api/1.0/${props[0]}/${props[1]}?${props[2]}` 
 
    case 2: 
 
     return `https://app.asana.com/api/1.0/${props[0]}?${props[1]}` 
 
    case 1: 
 
     return `https://app.asana.com/api/1.0/${props[0]}` 
 
    default: 
 
     return console.log(props) 
 
    } 
 
} 
 

 
export const asanaPost = (props, data) => { 
 
    return fetch(asanaUrl(props), options('post', data)) 
 
    .then(response => response.json()) 
 
}

Dans la console, je vois le retour de la console.log qui montre le JSON j'envoie dans mon corps clé:

{"assignee":22800770039251,"name":"test","notes":"test"}

et l'erreur suivante

Failed to load resource: the server responded with a status of 400 (Bad Request)

L'URL semble correcte: https://app.asana.com/api/1.0/tasks?workspace=31542879721131

Le message d'erreur est:

"Must specify exactly one of project, tag, or assignee + workspace"

Il ne semble pas question de quels domaines j'inclure dans le corps (y compris un projet a abouti à la même erreur), ce qui me fait suspecter que quelque chose d'autre se prépare et que l'API Asana ne saisit pas le corps ou n'est pas capable de l'interpréter avec la façon dont j'ai mis les choses en place.

Merci de m'avoir aidé!

Répondre

1

L'URL api J'utilise est https://app.asana.com/api/1.0/tasks?opt_fields=html_notes

Je passe également projects comme une clé et une valeur de chaîne dans le corps.

Je n'utilise pas 'Asana-Fast-Api': 'true' dans les en-têtes