一个非常小的库,用于访问画布lms的api。

py_canvas_api的Python项目详细描述


我们的想法是为canvas api提供一个简单易懂的库。

画布api(https://canvas.instructure.com/doc/api/index.html)有数百个端点。

我觉得为他们每个人都写一个独特的方法是没有意义的。 相反,我创建了一个名为resterapi的类,它使用 动态生成端点的路径,并通过调用添加路径 带参数的元素画布类构建在resterapi之上。

其结果是一个相当小的库可以处理 画布API终结点。

像这样实例化canvas对象。

fromcanvas_apiimportCanvasc=Canvas('somedomain.instructure.com',CANVAS_ACCESS_TOKEN=os.getenv('ACCESS_TOKEN'))

构建路径

在实例化的canvas_api对象后面附加“methods”来构建路径。

您通常会看到一行,如get/api/v1/accounts/:account\u id/courses 在Canvas API文档中这将告诉您路径是什么以及内联 它需要的参数。您可以使用py_canvas_api库构建此路径 就像这样:c.accounts(8423).courses。不要担心/api/v1部分。

py_canvas_api库处理路径参数,例如:user by taking 它们作为方法参数例如,下面是您在 使用上述路径的ID为10的帐户。

# get a list of courses (paginated to 10) in the accountaccounts=c.accounts('self').courses.get().json()

常见请求

get

要发出get请求,只需以get()结束。这告诉图书馆 发出GET请求。这个库使用了很棒的Requests库,因此 在本例中,返回对象是简单的响应对象。你会经常 希望将响应作为json对象。通过使用 回应。

# get a list of courses (paginated to 10) in the accountaccounts_json=c.accounts('self').courses.get().json()

如果需要发送查询参数(问题后添加的键值对 标记),将这些作为关键字参数添加到get()调用中。假设你想要 一份你自己的课程清单,你是一名教师,并且报名是有效的。你通常需要 添加?enrollment_type=teacher&;enrollment_state=active指向要执行此操作的URL。使用py_canvas_api 不过,你可以这样做。

# get a list of courses (paginated to 10) in the accountaccounts_json=c.courses.get(enrollment_type='teacher',enrollment_state='active').json()

这里还有几个例子。

# list of usersusers=c.accounts('self').users.get().json()# assignments in course with canvas id 23423assignments=c.courses(23423).assignments.get().json()# assignments in course with sis id ENG101assignments=c.courses('sis_course_id:ENG101').assignments.get().json()# list communication channels for user with id 82channels=c.users(82).communication_channels.get().json()# list own communication channelschannels=c.users('self').communication_channels.get().json()# Get a list of all courses in the account. This will keep pulling results as# long as there are more pages. It uses generator functions to do this is a# smart way.accounts=c.accounts('self').course.get_paginated()

特殊情况

有一些特殊的案例 上课。例如,SIS Import API接受文件上传并需要 特殊处理

这里是如何做一个sis导入。

fromcanvas_apiimportSISImportersis_importer=SISImporter('somedomain.instructure.com',CANVAS_ACCESS_TOKEN=os.getenv('ACCESS_TOKEN'))sis_importer.do_sis_import(filepath)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java什么会导致程序在它似乎拥有的监视器上被阻止?   java Android studio设置视图的背景色   java我可以保存一个文本文件而不给用户修改它的能力吗?   pdfbox PDFBOX2。0:java堆堆栈错误   java是维护和操作AllowList的有效方法   JAVAsql。SQLException:找不到适合jdbc的驱动程序:mysql://localhost:3306/asd性爱   如何使用java。lang.NullPointerException:void 安卓。支持v7。应用程序。ActionBar。setElevation(float)“”在空对象引用上'   java调试空指针异常   java正则表达式,以按令牌的特定匹配项拆分,同时忽略其他匹配项   java为JPanel设置边框上的笔划   并发@Schedule方法的java行为   如何在Java中使用泛型与语言运算符和泛型类扩展数   java Rhino Javascript如何为异常堆栈跟踪标记字符串源   运行可执行jar时发生java错误,无法找到或加载主类