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é!