在我的React项目中,我进行了Axios调用,以填充一个日历事件列表,以从Microsoft Outlook日历中获取数据(使用Microsoft API)。结果如下
如您所见,只有事件描述给我带来了问题。确实,为了显示事件描述,它向我显示了一个没有事件详细信息的HTML字符串。
我读到我必须在请求Content-type:text
的标头中输入内容,但是我尝试了并且它不起作用。我该如何解决?这是我的Axios请求
getEvents(startDate, endDate, accessToken) {
const startDateString = startDate.toISOString();
const endDateString = endDate.toISOString();
axios.get(
`https://graph.microsoft.com/v1.0/users/${USER_PUBLIC_ID}/calendarview?startdatetime=${startDateString}&enddatetime=${endDateString}&orderby=start/dateTime`,
{
headers: {
Authorization: `Bearer ${accessToken}`,
},
},
).then(response => this.setEvents(response.data.value))
.catch((error) => {
console.error(error.response);
});
}
答案 0 :(得分:1)
为此,需要指定Prefer: outlook.body-content-type="text"
标头。
要指定要在 Body 中返回的所需格式,然后 GET请求中的 UniqueBody 属性,请使用
Prefer: outlook.body-content-type
标头:
- 指定
Prefer: outlook.body-content-type="text"
以获取以文本格式返回的消息正文。- 指定
Prefer: outlook.body-content-type="html"
,或仅跳过标题,以HTML格式返回邮件正文。
示例
getEvents(startDate, endDate, accessToken) {
const startDateString = startDate.toISOString();
const endDateString = endDate.toISOString();
return axios.get(
`https://graph.microsoft.com/v1.0/users/${USER_PUBLIC_ID}/calendarview?startdatetime=${startDateString}&enddatetime=${endDateString}&orderby=start/dateTime`,
{
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
'Prefer' : 'outlook.body-content-type="text"'
}
}
);
}
答案 1 :(得分:0)
您需要给axios一个配置对象。当前,您正在使用get属性,这就是为什么您的代码当前不起作用的原因:
axios({
url: `https://graph.microsoft.com/v1.0/users/${USER_PUBLIC_ID}/calendarview?startdatetime=${startDateString}&enddatetime=${endDateString}&orderby=start/dateTime`,
method: "GET",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-type": "text"
},
})
您可以在此处了解更多信息:https://github.com/axios/axios