1

在我的 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);
      });
  }
4

2 回答 2

1

为此,Prefer: outlook.body-content-type="text"需要指定标题。

根据文件

要指定要在 GET 请求的BodyUniqueBody属性中返回的所需格式,请使用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"'
        }
      }
    );
}
于 2019-01-25T15:39:21.117 回答
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

于 2019-01-25T10:48:38.580 回答