【问题标题】:Batch requests with Google's Client Library with Javascript使用 Javascript 使用 Google 客户端库的批量请求
【发布时间】:2017-04-18 20:13:12
【问题描述】:

我正在尝试使用谷歌的客户端库 API 请求多条记录。 我正在尝试获取与单个 Google 课程相关的学生列表和单独的作业列表。我正在使用谷歌课堂 API (https://developers.google.com/classroom/reference/rest/)。

这是我目前得到的:

    let batch = gapi.client.newBatch();

    let courseWorkRequest = function(courseId) {
        return gapi.client.request({
            'path': `/v1/courses/${courseId}/courseWork`,
        });
    };

    let studentRequest = function (courseId) {
        return gapi.client.request({
            'path': `/v1/courses/${courseId}/students`
        });
    };

    listOfGoogleClasses.forEach(function (course) {
        let courseAssignments = courseWorkRequest(course.id);
        batch.add(courseAssignments);
        let courseStudents = studentRequest(course.id);
        batch.add(courseStudents)
    });

    batch.then(function(response){
        console.log(response);
    });

请求有效,但对于响应,我只是得到一系列看起来像这样的对象:

  body:"Not Found"
  headers:Object
  result:false
  status:404
  statusText: "Not Found"

【问题讨论】:

    标签: javascript google-api google-api-client google-classroom


    【解决方案1】:

    从错误本身推断,这意味着您缺少请求正文的一些必需属性,例如 Content-Type、Content-Length 等。示例可以在Example batch request 中看到

    POST https://classroom.googleapis.com/batch HTTP/1.1
    Authorization: Bearer your_auth_token
    Content-Type: multipart/mixed; boundary=batch_foobarbaz
    Content-Length: total_content_length
    
    --batch_foobarbaz
    Content-Type: application/http
    Content-Transfer-Encoding: binary
    MIME-Version: 1.0
    Content-ID: <item1:12930812@classroom.example.com>
    
    PATCH /v1/courses/134529639?updateMask=name HTTP/1.1
    Content-Type: application/json; charset=UTF-8
    Authorization: Bearer your_auth_token
    
    {
      "name": "Course 1"
    }
    --batch_foobarbaz
    Content-Type: application/http
    Content-Transfer-Encoding: binary
    MIME-Version: 1.0
    Content-ID: <item2:12930812@classroom.example.com>
    
    PATCH /v1/courses/134529901?updateMask=section HTTP/1.1
    Content-Type: application/json; charset=UTF-8
    Authorization: Bearer your_auth_token
    {
      "section": "Section 2"
    }
    

    【讨论】:

      【解决方案2】:

      google 客户端库适用于所有 Google API。因此我认为您需要在路径中提供完整的 URL。

      尝试将路径设置为:https://classroom.googleapis.com/v1/courses/{courseId}/courseWork 而不仅仅是/v1/courses/{courseId}/courseWork

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-01
        • 2020-06-11
        • 2015-09-27
        • 1970-01-01
        • 1970-01-01
        • 2017-12-31
        相关资源
        最近更新 更多