Skip to content
fushang318 edited this page Jan 7, 2014 · 33 revisions

四叶草知识手册服务端需要提供的 HTTP API

概要

1 用户登录(登陆成功时返回的信息包括用户姓名头像信息) 2 用户登出 3 知识网列表(切换知识网时的列表) 4 用户某个知识网的经验状态 5 用户某个知识单元网状图 6 知识单元下的节点列表 7 随机获得一个节点下的一个练习题 7.1 随机获得一个节点下的13个练习题 8 练习失败 9 练习成功

详细

1 用户登录

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

2 用户登出

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

3 知识网列表

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

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

获取当前登陆用户的某一个知识网的经验状态

url
  /knowledge_nets/:id/exp_info
method
  get
response
  {
    :level => 1,
    :level_up_exp_num => 30,
    :exp_num => 10
  }

5 用户某个知识单元网状图

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

包括单元是否解锁信息,是否学习信息

url
  /knowledge_nets/:id/sets
method
  get
response

{
  :sets =>  [
    {
      :id   => set.id,
      :name => set.name,
      :icon -> set.icon,
      :deep => set.deep
      :is_unlocked => true,
      :is_learned  => true
    },
    ...
  ],
  :checkpoints => [
    {
      :id => checkpoint.id,
      :learned_sets => ["set-1","set-2"],
      :is_unlocked => true,
      :is_learned  => true
    },
    ...
  ],
  :relations => [
    {
      :parent   => "set-1",
      :child => "set-2"
    },
    {
      :parent   => "set-2",
      :child => "checkpoint-1"
    },
    ...
  ]
}

6 知识单元下的节点列表

获取显示当前登陆用户可以看到的某个知识单元下的知识节点列表数据 包括单元是否解锁信息,是否学习信息

url
  /knowledge_nets/:net_id/knowledge_sets/:id/nodes
method
  get
response
{
  :nodes => [
    {
      :id       => node.id,
      :name     => node.name,
      :desc     => node.desc,
      :required => node.required,
      :is_unlocked => true,
      :is_learned  => true
    },
    ...
  ],
  :relations => [
    {
      :parent   => "node-31",
      :child => "node-32"
    },
    ............
  ]
}

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

url
  /knowledge_nets/: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.content,
    :choices => [
      "",
      "",
      "",
      ""
    ],
    :answer => question.answer
  }

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

url /knowledge_nets/:net_id/knowledge_nodes/:id/get_random_questions method get response

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

8 练习失败

练习失败目前没有任何数据操作,暂时不需要提供 HTTP API

9 练习成功

url
  /knowledge_nets/:net_id/knowledge_nodes/:id/test_success
method
  POST
response
  {
    :add_exp_num  => num, # 本次练习获取的经验值
    :history_info => [1, 2, 3, 4, 5] # 最近五天每天获取的经验值
  }

Clone this wiki locally