Skip to content

biohub.biobrick

shirley-wu edited this page Sep 1, 2017 · 21 revisions

Biobrick Restful API

register name: api:biobrick

Note: Biobrick只读,不可更改。如果需要加入更改功能以后再说。

serializer

serializer.data的fields: {

  • part_name
  • sequence: DNA序列
  • short_desc: 短描述
  • description: 长描述,虽然有些biobrick的description比short_desc还短
  • uses: 使用数
  • urlset: 一个字典,包含三个keys: part, related_parts与gb_download。其中urlset['part']是biobrick在parts.igem.org官网的url。

}

Modify: 不再提供单独的highlight域,而是直接返回highlight结果。

list

功能: 列出已有的biobricks。不知道这个功能有什么用,不想要可以去除。

url: /api/biobricks/

register name: api:biobrick:biobrick-list

method: get

参数:

  • order: 可选,表示biobricks排列顺序。可选值为'part_name'(按照biobrick名字排序),'-uses'(按照uses降序排序)。默认值为'part_name'
  • page: 表示页数。如无此参数默认为第一页。

返回格式:

若成功: 状态码200, {

  • count: biobricks个数
  • next: 下一页
  • previous: 前一页
  • results: 一个列表,每一项均为serializer序列化后的data

}

若不成功: 状态码视情况而定……{

  • detail: 出错信息

}

retrieve

功能: 通过pk(即part_id)检索某个biobrick,似乎更没有什么用的功能。

url: /api/biobrick//

register name: api:biobrick:biobrick-detail

method: get

参数: 没参数

返回格式:

若成功: 状态码200, 格式同serializer

若不成功: 状态码视情况而定……{

  • detail: 出错信息

}

search

依赖与安装

为了实现各种功能并减小数据库的负担,search使用elasticsearch后端,将大量数据存储为index以提供搜索服务。

search只有在正确安装elasticsearch的情况下才可以使用。elasticsearch要求<=2.x(3.x不被支持)。推荐按照elasticsearch官网方式安装。

安装elasticsearch之后,需要在http://127.0.0.1:9200/ 运行elasticsearch。这也是elasticsearch的默认端口。由于elasticsearch运行端口自由度很高,将来可以考虑将程序内elasticsearch端口设置作为可自定义的设置项。

为了搜索,需要建立索引。命令为python manage.py update_index。在我的电脑上大概需要5min。

我没有经过非常精确的测试,但是感觉上看搜索一次大概1~3s。

功能:

  • 可以对part_name与short_desc进行模糊搜索,优先搜索part_name
  • 支持高亮
  • 可以给定显示顺序
  • 可以给出拼写建议

后端实现: 使用haystack框架与elasticsearch后端。原本使用whoosh,但whoosh太慢。后期可能会尝试其他后端

url: /api/biobrick/search/

register name: api:biobrick:biobrick-search

method: get

参数:

  • order: 可选。默认为按照相关度排序。可选值为'part_name'与'-uses'
  • q: 在short_desc与description中查询,支持高级查询语法
  • part_name
  • sequence
  • highlight: 可选。如果提供该变量,无论值为什么都会进行高亮

返回格式: 类似list

访问成功条件下,有以下区别:

  • 如果提供了highlight参数,结果中的part_name与short_desc会被标签
    标记高亮。
  • 如果q拼写错误,response.data中会有suggestion域,推荐正确的拼写。
Clone this wiki locally