MIcrosoft API получает описание события календаря и показывает его соответствующим образом - PullRequest
0 голосов
/ 25 января 2019

В моем проекте React я сделал вызов Axios, чтобы заполнить список событий календаря, получая данные из календаря Microsoft Outlook (используя Microsoft API). Результат следующий enter image description here

Как видите, только описание события вызывает у меня проблему. Действительно, чтобы показать описание события, он показывает мне строку 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);
      });
  }

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Для этого необходимо указать Prefer: outlook.body-content-type="text" заголовок.

Согласно документации :

Чтобы указать желаемый формат для возврата в Body и UniqueBody свойства в GET-запросе, используйте заголовок 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"'
        }
      }
    );
}
0 голосов
/ 25 января 2019

Вам нужно дать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...