因此,我正在用Python编写一个程序,使用请求模块从google课堂API获取数据。我从课堂上得到了完整的json响应,如下所示:
{'announcements': [{'courseId': '#############', 'id': '###########', 'text': 'This is a test','state': 'PUBLISHED', 'alternateLink': 'https://classroom.google.com/c/##########/p/###########', 'creationTime': '2021-04-11T10:25:54.135Z', 'updateTime': '2021-04-11T10:25:53.029Z', 'creatorUserId': '###############'}, {'courseId': '############', 'id': '#############', 'text': 'Hello everyone', 'state': 'PUBLISHED', 'alternateLink': 'https://classroom.google.com/c/#############/p/##################', 'creationTime': '2021-04-11T10:24:30.952Z', 'updateTime': '2021-04-11T10:24:48.880Z', 'creatorUserId': '##############'}, {'courseId': '##################', 'id': '############', 'text': 'Hello everyone', 'state': 'PUBLISHED', 'alternateLink': 'https://classroom.google.com/c/##############/p/################', 'creationTime': '2021-04-11T10:23:42.977Z', 'updateTime': '2021-04-11T10:23:42.920Z', 'creatorUserId': '##############'}]}
事实上,我无法将其转换为一个漂亮的格式,所以我只是从http请求中粘贴它。我实际上想做的只是向服务请求最初的几条公告(比如1、2、3,根据需求而定(,而我得到的是自创建教室以来发布的所有公告(如示例3中的公告(。现在,我相信获取所有公告可能会使程序变得更慢,所以我更希望只获取所需的公告。有什么方法可以通过传递一些论点或其他什么来做到这一点吗?谷歌课堂提供了一些直接的功能,但我后来发现了这些功能,并且已经使用请求模块编写了所有内容,这需要更改很多我想避免的事情。然而,如果不可避免的话,我也会走那条路。
答案:
使用pageSize
字段限制announcements: list
请求中所需的响应数,orderBy
参数为updateTime asc
更多信息:
根据文件:
orderBy
:string
结果的可选排序顺序。逗号分隔的字段列表,其中包含可选的排序方向关键字。支持的字段为
updateTime
。支持的方向关键字为asc
和desc
。如果未指定,则默认行为为updateTime desc
。示例:updateTime asc
、updateTime
和:
pageSize
:integer
要返回的最大项目数。零或未指定表示服务器可以分配最大值。
因此,假设您想要课程的前3个公告,您将使用3
的pageSize
和updateTime asc
:的orderBy
# Copyright 2021 Google LLC.
# SPDX-License-Identifier: Apache-2.0
service = build('classroom', 'v1', credentials=creds)
asc = "updateTime asc"
pageSize = 3
# Call the Classroom API
results = service.courses().announcements().list(pageSize=3, orderBy=asc ).execute()
或者HTTP请求示例:
GET https://classroom.googleapis.com/v1/courses/[COURSE_ID]/announcements
?orderBy=updateTime%20asc
&pageSize=2
&key=[YOUR_API_KEY] HTTP/1.1
Authorization: Bearer [YOUR_ACCESS_TOKEN]
Accept: application/json
参考文献:
- 方法:announcements.list |课堂API |谷歌开发者