我正在尝试使用Asana API,因为我学习了React和Redux。到目前为止,我已经能够使用fetch()从Asana API获取数据了,但我在发布任务时遇到了问题。
以下是我使用的代码:
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() )
}

在控制台中,我看到console.log的返回,它显示了我发送到我的正文密钥的JSON:
{"assignee":22800770039251,"name":"test","notes":"test"}
以及以下错误
Failed to load resource: the server responded with a status of 400 (Bad Request)
网址似乎正确:https://app.asana.com/api/1.0/tasks?workspace=31542879721131
错误消息是:
"Must specify exactly one of project, tag, or assignee + workspace"
我在身体中包含哪些字段(包括一个导致相同错误的项目)似乎并不重要,这让我怀疑还有其他事情正在发生,并且Asana API没有获得抓住身体,或者不能用我如何设置来解释它。
感谢您帮我解决这个问题!
答案 0 :(得分:1)
我使用的api url是
https://app.asana.com/api/1.0/tasks?opt_fields=html_notes
我还将projects
作为键和字符串值传递给正文。
我不在标题
中使用'Asana-Fast-Api': 'true'