Google Calendar V3 REST API中的批量请求

时间:2013-07-02 12:41:48

标签: http rest google-api google-calendar-api gdata-api

如何通过V3 REST API使用批量请求获取/添加/更新Google Calendar事件?我试过但不行。根据文档(https://developers.google.com/google-apps/calendar/batch),应该可以通过向API发布多部分/混合内容类型消息来发送批处理请求。工作HTTP POST的一个例子很棒。

谢谢, Riyaz

3 个答案:

答案 0 :(得分:1)

以下批处理请求获取eventId1,更新eventId2并在使用calendarId标识的日历下创建新事件。

POST /batch HTTP/1.1
Authorization: /*Auth token*/
Host: host
Content-Type: multipart/mixed; boundary=batch_foobarbaz
Content-Length: total_content_length

--batch_foobarbaz
Content-Type: application/http
Content-ID: <item1:x@barnyard.example.com>

GET /calendar/v3/calendars/calendarId/events/eventId1

--batch_foobarbaz
Content-Type: application/http
Content-ID: <item2:x@barnyard.example.com>

PUT /calendar/v3/calendars/calendarId/events/eventId2
Content-Type: application/json
Content-Length: part_content_length

{{ body }}

--batch_foobarbaz
Content-Type: application/http
Content-ID: <item3:x@barnyard.example.com>

POST /calendar/v3/calendars/calendarId/events
Content-Type: application/json
Content-Length: part_content_length

{{ body }}

--batch_foobarbaz--

答案 1 :(得分:1)

我发现外部 URL 必须是 "https://www.googleapis.com/batch/calendar/v3/" 并且边界 url 必须是 "/calendar/v3/calendars/{calendarID}/events"

完整的 HTTP 请求如下所示:

$(function() {
$("#bank_name").autocomplete({
    source: function (request, response) {
        $.getJSON("{{url_for('autocomplete_banks')}}", {
            q: request.term, 
        }, function (data) {
            response(data.matching_results); // matching_results from jsonify
        });
    },
    minLength: 2,
    select: function (event, ui) {
        console.log(ui.item.value);

        $.ajax({
            data: {
                bank_name: ui.item.value
            },
            type: 'POST',
            url: '/process_banks'
        })
        .done(function (data) {
                if (data.bank_name) {
                    $('#swift_new').val(data.swift);
                }
            })
    },

})

答案 2 :(得分:0)

端点是

https://www.googleapis.com/batch

当我执行日历批处理请求时,这适用于我。我遇到的一个问题是我的最后一个边界令牌,我之后没有--。因此,每个令牌都以--开头,最后一个令牌最后有--。正如@Burcu Dogan的例子所示。