以清華大學的C++語言程序設計基礎(2020春)和生活英語據說(2020春)爲例json
課程界面以下api
目錄中有5種單元對象:cookie
對象 | 例子 |
---|---|
視頻(video) | https://next.xuetangx.com/learn/THU08091000247/THU08091000247/1515741/video/1358540 |
圖文(article) | https://next.xuetangx.com/learn/THU08091000247/THU08091000247/1515741/article/1358541 |
做業(exercise) | https://next.xuetangx.com/learn/THU08091000247/THU08091000247/1515741/exercise/1358558 |
考試(quiz) | https://next.xuetangx.com/learn/THU05021000376/THU05021000376/1515481/quiz/1340243 (清華大學-生活英語據說(2020春) |
討論(discussion) | https://next.xuetangx.com/learn/THU05021000376/THU05021000376/1515481/discussion/3934275 (清華大學-生活英語據說(2020春) |
能夠看出,URL規則比較簡單ide
首先是ui
next.xuetangx.com/learn/url
緊接着是重複了兩次的數字設計
THU 0809 1000 247 C++3d
THU 0502 1000 376 英語據說unix
THU就是清華咯,0809應該是課程提交日期,1000摸不透,247應該是該學校上傳課程的順序ID。code
再接着是一個數字串,應該與課程ID相關
1515481
最後就是單元類型和這個單元的ID了
article/135854
quiz/1340243
注:只有這串數字ID在Json裏有被返回
一個課程的目錄信息列表能夠經過GET請求下面這樣的URL獲得(須要帶cookies)
https://next.xuetangx.com/api/v1/lms/learn/course/chapter?cid=1515481&sign=THU05021000376
返回形式: json
裏面還有不少我沒看懂的返回值,有興趣能夠自行研究
這裏拿 生活英語據說 作例子
這裏先提早把Json的結構理一下
從外到裏,一個目錄的結構應該爲
順序 | 名稱 | 註解 |
---|---|---|
1 | course | 課 |
2 | chapter | 章 |
3 | section | 節 |
4 | leaf | 頁(直譯有丶抽象) |
拿截圖來對應一下
瞭解完這個層次以後,後面就好理解一些了
拿到Json後,拖到Bejson看一下
能夠看到,全部數據都在名爲 data
的JsonObject裏
course_id | 課的id咯 |
---|---|
course_name | 課名 |
course_chapter | 該課的全部章的集合 |
從0開始,course_chapter
裏每個JsonObject表明一個章
這裏的10個JsonObject剛好與目錄的10個單元相對應
這裏展開 0
表明的第一章 後能夠看到一些數據
order | 章的絕對順序,0開始 |
---|---|
id | 章的ID |
name | 章名 |
section_leaf_list | 該章的全部節的集合 |
相似地,
從0開始,sectiopn_leaf_list
裏每個JsonObject表明一個節
這裏11個JsonObject剛好與第一章中的10個小節對應
這裏展開 0
表明的第一節,能夠看到如下數據
order | 節的絕對順序,0開始 |
---|---|
chapter_id | 章的id |
id | 節的id |
name | 節名 |
leaf_list | 該節全部頁的集合 |
相似地,
從0開始,leaf_list
裏地每個JsonObject表明一個頁
這裏1個JsonObject剛好與第一章第一節中的1個頁對應
這裏展開 0
表明的第一頁(也是惟一一頁),能夠看到如下內容
name | 頁名 |
---|---|
is_locked | 鎖定狀態,這個可能會用於quiz類型的單元,用於限制學生對單元的訪問,好比考完後該項直接改成true,禁止重考 |
start_time | 毫秒制的unix時間戳,表明第一次觀看時間 |
chapter_id | 章id |
section_id | 節id |
leaf_type | 目前我還沒看到其餘的type |
id | 頁的id (這個就是URL的最後一部分數字) |
is_show | 不清楚,該頁是否可見? |
end_time | 第一次看完的時間?爲何我這裏看過了可是值是0呢 |
score_deadline | 觀看截止日期 |
is_score | 不清楚 |
is_assessed | 不清楚 |
order | 頁的絕對順序,0開始 |
leafinfo_id | 頁信息id (雖然不知道這id用來幹啥的..) |