功能描述
我们的输入法需要做到古文字的typing。古文字输入法的问题在于如何展示一个古文字,以及如何通过键盘的输入来映射出我们想要的古文字。
首先,我们必须明确一下几个关键点:
- 展示古文字
- 通过键盘输入获取到古文字
其次,我们可以考虑如下的功能:
- 根据用户打字习惯来对文字的输出进行排序,优先将用户常用的文字排在前头
- 多种键盘输入到古文字的映射
问题
- 现阶段需要设计一个输入法中专用的实体来表示古文字,但是如何保证文章标识的文字和输入法中的文字的一致性
- 确定输入法文字实体的属性
- 允许文档形式的同一种文字存在不同的文档实体,但是输入法对于同一个文字只能有同一个实体
构思
确定新的文字实体属性:
- id 对于文字的唯一标识
- char_svg 该文字的SVG格式
- char_pron 发音
- char_img_path 该文字的图片路径
- article_link 含有该文字的文章头信息列表
- char_link 该文字的文档形式的头信息列表
- pass_audit 该文字是否通过审核,0表示未审核、1表示已审核
存储方式:
利用redis做高速逆向索引,key为字符串序列,value为id set
利用mongoDB做输入法古文字实体存储
为了保证mongoDB和redis的一致性,可以周期性的同步数据
由于图片需要校验和来进行校验,所以需要有一个内部的图片Header,来保存图片的信息
接口:
接口说明:
本接口用于获取当前字符序列可以查询到的古文字列表
接口请求地址:
https://211.87.232.200/input/search
请求头:
请求头 | 请求内容 | 说明 |
---|---|---|
id | String | 当前用户id |
请求方式:GET
参数类型:JSON
请求示例:
{
"search_code" : "jian"
}
请求参数说明:
字段名 | 字段说明 | 字段类型 | 是否必填 |
---|---|---|---|
search_code | 用于查询古文字的字符串序列 | string | 是 |
响应示例:
成功响应编码:
{
"code": "200",
"message": "请求成功",
"data": [
{
"id": "51928374",
"char_svg": "<...> </...>",
"char_pron": "jian"
"char_img_path": "https://...",
"article_link": [
{
"aid": "1919810",
"title": "Grand Maison Tokyo",
"articleauthor": "...",
"bookname": "EsCoffile",
"dynasty": "宋"
}
],
"char_link": [
{
"id": "1987510",
"img_path": "http://...",
"pronunciation": [
"jian",
"..."
],
}
]
}
]
}
失败响应编码:
{
"code": "400",
"message": "请求参数异常",
}
响应参数说明
接口返回码 | 接口返回描述 |
---|---|
200 | 请求正确 |
400 | 请求参数异常 |
500 | 服务器异常 |
接口说明:
本接口用于插入新的古文字集合
接口请求地址:
https://211.87.232.200/input/insert
请求头:
请求头 | 请求内容 | 说明 |
---|---|---|
zmw | “zmw” + “(用户token)” | 用户token鉴权,内容示例:zmw28402088… |
id | String | 当前用户id |
请求方式:POST
参数类型:JSON
请求示例:
[
{
"char_svg": "<...>...</...> ",
"char_pron": ["...", "..."],
"base64": "...",
"belong_article_id": "...",
},
{
"char_svg": "<...>...</...> ",
"char_pron": ["...", "..."],
"base64": "...",
"belong_article_id": "...",
}
]
请求参数说明:
字段名 | 字段说明 | 字段类型 | 是否必填 |
---|---|---|---|
char_svg | 古文字的SVG格式 | string | 否 |
char_pron | 古文字的字符序列标识 | List | 是 |
base64 | 图片的base64编码 | string | 是 |
belong_article_id | 古文字所属的文章id | string | 否 |
响应示例:
成功响应编码:
{
"code": "200",
"message": "插入成功, 该文字正在等待被审核",
"data": [
{
"id": "51928374",
"char_svg": "<...> </...>",
"char_pron": "jian",
"char_img_path": "https://...",
"article_link": [
{
"aid": "1919810",
"title": "Grand Maison Tokyo",
"articleauthor": "...",
"bookname": "EsCoffile",
"dynasty": "宋"
}
],
"char_link": [
{
"id": "1987510",
"img_path": "http://...",
"pronunciation": [
"jian",
"..."
],
}
]
}
]
}
失败响应编码:
{
"code": "401",
"message": "该字符已经存在",
}
响应参数说明
接口返回码 | 接口返回描述 |
---|---|
200 | 插入成功,但是等待被审核 |
400 | 请求参数异常 |
401 | 重复添加资源 |
500 | 服务器异常 |
501 | 服务器文件写入错误 |
接口说明:
本接口用于记录用户选择字符的情况
接口请求地址:
https://211.87.232.200/input/recordSelection
请求头:
请求头 | 请求内容 | 说明 |
---|---|---|
id | String | 当前用户id |
请求方式:POST
参数类型:JSON
请求示例:
{
"cid" : "149283714"
}
请求参数说明:
字段名 | 字段说明 | 字段类型 | 是否必填 |
---|---|---|---|
cid | 用户选择的字符的id | string | 是 |
响应示例:
成功响应编码:
{
"code": "200",
"message": "记录成功",
}
失败响应编码:
{
"code": "400",
"message": "请求参数异常",
}
响应参数说明
接口返回码 | 接口返回描述 |
---|---|
200 | 请求正确 |
400 | 请求参数异常 |
500 | 服务器异常 |
接口说明:
本接口用于更新现有的古文字实体信息
接口请求地址:
https://211.87.232.200/input/update
请求头:
请求头 | 请求内容 | 说明 |
---|---|---|
id | String | 当前用户id |
请求方式:POST
参数类型:JSON
请求示例:
{
"id": "51928374",
"char_svg": "<...> </...>",
"char_pron": "jian",
"char_img_path": "https://...",
"article_link": [
{
"aid": "1919810",
"title": "Grand Maison Tokyo",
"articleauthor": "...",
"bookname": "EsCoffile",
"dynasty": "宋"
}
],
"char_link": [
{
"id": "1987510",
"img_path": "http://...",
"pronunciation": [
"jian",
"..."
],
}
]
}
请求参数说明:
字段名 | 字段说明 | 字段类型 | 是否必填 |
---|---|---|---|
—— | 修改完成后的古文字实体的JSONObject字符串 | string | 是 |
特别提示
如果没有特殊原因,请不要修改article_link字段和char_link字段
响应示例:
成功响应编码:
{
"code": "200",
"message": "请求成功",
"data": [
{
"id": "51928374",
"char_svg": "<...> </...>",
"char_pron": [
"jian",
"yan",
"114514"
],
"char_img_path": "https://...",
"article_link": [
{
"aid": "1919810",
"title": "Grand Maison Tokyo",
"articleauthor": "...",
"bookname": "EsCoffile",
"dynasty": "宋"
}
],
"char_link": [
{
"id": "1987510",
"img_path": "http://...",
"pronunciation": [
"jian",
"..."
],
}
]
}
]
}
失败响应编码:
{
"code": "400",
"message": "请求参数异常",
}
响应参数说明
接口返回码 | 接口返回描述 |
---|---|
200 | 请求正确 |
400 | 请求参数异常 |
500 | 服务器异常 |
接口说明:
本接口用于删除现有的古文字实体信息
接口请求地址:
https://211.87.232.200/input/delete
请求头:
请求头 | 请求内容 | 说明 |
---|---|---|
id | String | 当前用户id |
请求方式:POST
参数类型:JSON
请求示例:
{
"cIDs": ["51928374", "1235161"]
}
请求参数说明:
字段名 | 字段说明 | 字段类型 | 是否必填 |
---|---|---|---|
cIDs | 需要集体删除的古文字ID列表 | List | 是 |
响应示例:
成功响应编码:
{
"code": "200",
"message": "删除成功,删除了 2 个古文字",
}
失败响应编码:
{
"code": "400",
"message": "请求参数异常",
}
响应参数说明
接口返回码 | 接口返回描述 |
---|---|
200 | 请求正确 |
400 | 请求参数异常 |
500 | 服务器异常 |