Skip to content
fushang318 edited this page Apr 3, 2014 · 33 revisions

四叶草知识手册服务端 HTTP API

概要

用户登录(登陆成功时返回的信息包括用户姓名头像信息)

``` url /account/sign_in method post params user[login] # admin@edu.dev user[password] # 1234 response if status == 200 { :id => user.id, :name => user.name, :login => user.login, :email => user.email, :avatar => user.avatar.url } end if status == 401 {:sign_in => 'failure'} end ```

用户登出

``` url /api/account/sign_out method get response if status == 200 {:sign_out => "success"} end ```

知识网列表(切换知识网时的列表)

``` url /api/knowledge_nets/list method get response if status == 200 [ { id => "english", :name => "初级英语" }, ... ] end ```

用户信息

获取当前登陆用户的用户信息 ``` url /api/user/profile method get response if status == 200 { :id => user.id, :name => user.name, :login => user.login, :email => user.email, :avatar => user.avatar.url } end if status == 401 {:sign_in => 'failure'} end ```

用户某个知识网的经验状态

获取当前登陆用户的某一个知识网的经验状态 ``` url /api/knowledge_nets/:id/exp_info method get response { :level => 1, :level_up_exp_num => 30, :exp_num => 10 } ```

用户某个知识单元网状图

根据该API获取的数据,就可以显示出当前登陆用户可以看到的知识单元网状图

包括单元是否解锁信息,是否学习信息,用户的经验状态

url
  /api/knowledge_nets/:id
method
  get
response

{
  :total_exp_num => status.total_exp_num,
  :id   => net.id,
  :name => net.name,
  :sets =>  [
    {
      :id   => set.id,
      :name => set.name,
      :icon -> set.icon,
      :deep => set.deep,
      :is_learned  => true,
      :node_count  => 5,
      :learned_node_count => 1
    },
    ...
  ],
  :checkpoints => [
    {
      :id => checkpoint.id,
      :learned_sets => ["set-1","set-2"],
      :is_learned  => true
    },
    ...
  ],
  :relations => [
    {
      :parent   => "set-1",
      :child => "set-2"
    },
    {
      :parent   => "set-2",
      :child => "checkpoint-1"
    },
    ...
  ]
}

知识单元下的节点列表

获取显示当前登陆用户可以看到的某个知识单元下的知识节点列表数据 包括单元是否解锁信息,是否学习信息 ``` url /api/knowledge_nets/:knowledge_net_id/knowledge_sets/:id method get response { :id => id, :name => name, :icon => icon, :deep => deep, :is_learned => is_learned?(user), :node_count => nodes.count, :learned_node_count => learned_node_count(user), :nodes => [ { :id => node.id, :name => node.name, :desc => node.desc, :required => node.required, :is_learned => true }, ... ], :relations => [ { :parent => "node-31", :child => "node-32" }, ............ ] } ```

随机获得一个节点下的一个练习题

``` url /api/knowledge_nets/:knowledge_net_id/knowledge_nodes/:id/get_random_question method get params except_ids "id1,id2,id3" response { :node_id => "node-31", :id => question.id, :kind => question.kind, :content => question.make_content, :choices => [ "", "", "", "" ], :answer => question.answer } ```

随机获得一个节点下的13个练习题

``` url /api/knowledge_nets/:knowledge_net_id/knowledge_nodes/:id/get_random_questions method get response

[ { :node_id => "node-31", :id => question.id, :kind => question.kind, :content => question.make_content, :choices => [ "", "", "", "" ], :answer => question.answer

},
...

]




<h2 id="question_do_post_result">做一次某个练习题</h2>

url /api/questions/:id/do_answer method POST params answer # true | false response 200


<h2 id="test_success">练习成功</h2>

url /api/knowledge_nets/:knowledge_net_id/knowledge_nodes/:id/test_success method POST response { :learned_ids => [ { :id => 'node-1', :type => 'KnowledgeNode' }, { :id => 'set-1', :type => 'KnowledgeSet' }, { :id => 'checkpoint-1', :type => 'KnowledgeCheckpoint' }, ... ], :add_exp_num => num, # 本次练习获取的经验值 :history_info => [1, 2, 3, 4, 5] # 最近五天每天获取的经验值 }


<h2 id="concept_list">概念列表</h2>

url /api/knowledge_nets/:knowledge_net_id/concepts method get params is_learned # true || false(可选参数) is_unlocked # true || false(可选参数) response

[ { :id => id, :name => '...', // 概念名 :desc => '...', // 概念描述 :is_learned => true, // 是否已学 true or false :is_unlocked => true, :practicing_count => 12, // 练习次数(正确+错误) }, ... ]




<h2 id="set_concept_list">某个Set下概念列表</h2>

url /api/knowledge_nets/:knowledge_net_id/knowledge_sets/:id/concepts method get response [ { :id => id, :name => '...', // 概念名 :desc => '...', // 概念描述 :is_learned => true, // 是否已学 true or false :is_unlocked => true, :practicing_count => 12, // 练习次数(正确+错误) }, ... ]


<h2 id="node_concept_list">某个Node下概念列表</h2>

url /api/knowledge_nets/:knowledge_net_id/knowledge_nodes/:id/concepts method get response [ { :id => id, :name => '...', // 概念名 :desc => '...', // 概念描述 :is_learned => true, // 是否已学 true or false :is_unlocked => true, :practicing_count => 12, // 练习次数(正确+错误) }, ... ]



<h2 id="concept_learned_node_random_questions">和某个概念相关的已学知识节点的随机问题列表</h2>

url /api/concepts/:id/learned_node_random_questions method get params count # 返回问题的数量 response [ { :node_id => "node-31", :id => question.id, :kind => question.kind, :content => question.make_content, :choices => [ "", "", "", "" ], :answer => question.answer }, ... ]

Clone this wiki locally