5

为Open edX移动端实现选课功能

 2 years ago
source link: http://wwj718.github.io/post/edx/edx-mobile-enrollment/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Open edX移动端进展缓慢,几个月前的坑也不见填好。

现有的后台接口已经满足选课要求了,移动端还没更上,只能自己动手丰衣足食了,在此演示如何使用这些接口实现选课功能(使用工具httpie(把它理解为一个更先进的curl就行)做演示)

列出所有课程

http http://LMS_HOST/api/courses/v1/courses/

{
    "pagination": {
        "count": 46,
        "next": "http://LMS_HOST/api/courses/v1/courses/?page=2",
        "num_pages": 5,
        "previous": null
    },
    "results": [
        {
            "blocks_url": "http://LMS_HOST/api/courses/v1/blocks/?course_id=course-v1%3test%2Btest%2Btest",
            "course_id": "course-v1:test+test+test",
            "effort": null,
            "end": "2016-09-29T16:00:00Z",
            "enrollment_end": null,
            "enrollment_start": null,
            "media": {
                "course_image": {
                    "uri": "/asset-v1:test+test+test+type@[email protected]"
                },
                "course_video": {
                    "uri": null
                }
            },
            "name": "test",
            "number": "test",
            "org": "test",
            "short_description": "test",
            "start": "2016-02-01T00:00:00Z",
            "start_display": "2015年2月1日",
            "start_type": "timestamp"
        }]
}

值得关注的字段是course_id

更多的字段信息参考文档 :courses-api-courses-resource

用户注册课程(选课)

文档参考:View a User’s Enrollments or Enroll a User in a Course

以下是命令行演示

http POST "http://LMS_HOST/api/enrollment/v1/enrollment" course_details:=@course_details.json "Authorization: Bearer user_access_token"

其中必要的POST参数为course_details,文档中的其他参数可选,请求参数举例:

{"course_details":{"course_id": "course-v1:edX+DemoX+Demo_Course"}}

如果后端返回200,则表示用户注册课程成功

当然你也可以在浏览器中直接访问"http://LMS_HOST/api/enrollment/v1/enrollment

如果你想进一步拓展后端的RESTful接口,可以参考我的这个项目:edx_siteapi

移动端已经有选课功能了,如果你决定直接使用既有功能,可能需要做个调整,请求http://LMS_HOST/api/courses/v1/courses/?username=mooctest&mobile=true&page=1会报403,进入后台将CourseListView里的username = self.request.query_params.get('username', self.request.user.username)改为self.request.user.username


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK