如何使用 Fetch API 获取包含 # 的 URL?

How to fetch a URL containing a # with Fetch API?

我正在使用 Google 日历 API 并且要获取日历的事件,您必须向 https://www.googleapis.com/calendar/v3/calendars/calendarId/events 端点发送 GET 请求。

问题是 calendarId 可能包含一个 # 就像在 addressbook#contacts@group.v.calendar.google.com 中以及当我获取 https://www.googleapis.com/calendar/v3/calendars/addressbook#contacts@group.v.calendar.google.com/events, it's only actually fetching https://www.googleapis.com/calendar/v3/calendars/addressbook 时,即 URL 之前的部分#(我在 Chrome 网络选项卡中看到它,我只是在控制台中得到 GET https://www.googleapis.com/calendar/v3/calendars/addressbook 404

那么如何强制 fetch() 方法使用整个 URL?

您可能需要 percent-encode calendarId:

> encodeURIComponent("addressbook#contacts@group.v.calendar.google.com")
"addressbook%23contacts%40group.v.calendar.google.com"