Person In Your Note
需求分析
设计思路:
- 设计数据库(表结构)
- 设计前后端交互接口
- 实现服务器端和客户端的逻辑
功能简介
1.只支持单个用户
2.实现针对文章的增删查改
3.实现针对标签的增删查改
模块划分:
客户端:网页的形式
服务器端:HTTP协议
数据库:MySQL
客户端端的具体展现形式(网页)
- 展现备忘录列表页面
- 展现备忘录详情页面
- 管理备忘录页面
例如:当用户在客户端(网页) 执行某个操作的时候,比如新增博客,此时就会由客户端给服务器发送HTTP请求,请求中包含了操作的行为
服务器根据这个行为来完成对数据的具体操作
服务器端
数据库设计
-
创建一个数据库
-
一个备忘录表
-
一个标签表
使用代码 MySQL C API 来完成数据库操作
设计前后端的交互 API
基于 HTTP 协议进行扩展,创建自定制协议
服务器接口
一. 博客管理
- 新增博客
- 获取博客列表
- 获取某个博客的详细内容
- 修改博客
- 删除博客
二. 标签管理
- 新增标签
- 删除标签
- 查看所有标签
服务器设计方式
- 传统的 API 设计方式: 使用 query_string 来进行传递信息
例如: GET/blog?method=insert&title=…&content=…
-
restful 风格的 API 设计方式:使用不同的HTTP方法 来表达不同的语义
a) 使用 POST 方法表示新增
b) 使用 GET 方法表示查看
c) 使用 PUT 方法表示修改
d) 使用 DELETE 方式表示删除
3.使用 path 表示要操作的资源
4.使用 json 来组织body 中的数据
新增博客
POST/blog
{
title: xxx,
content: xxx,
create_time: xxx,
tag_id: xxx,
}
HTTP/1.1 200 OK
body
{
ok: true/false,
reason: "失败原因"
}
博客列表(查看所有博客)
请求(使用 tag_id 参数筛选指定标签下的博客):
GET /blog 获取所有
GET /blog?tag_id=1 按照标签来修改
响应:
HTTP/1.1 200 OK
[
{
"blog_id": 1,
"blog_url": "/blog/1",
"title": "备忘录1",
"tag_id": 1,
"create_time": "2019/05/14 12:00"
},
{
"blog_id": 2,
"blog_url": "/blog/2",
"title": "备忘录2",
"tag_id": 1,
"create_time": "2019/05/14 12:00"
}
]
查看某个博客 展示博客内容
请求:
GET /blog/:blog_id 类似于 /blog/1
响应:
HTTP/1.1 200 OK
{
"blog_id": 1,
"title": "备忘录1",
"content": "备忘录的 markdown 格式内容",
"create_time": "2019/05/14 12:00",
"tag_id": 1
}
删除博客
请求:
DELETE /blog/:blog_id
响应:
HTTP/1.1 200 OK
{
"ok": true,
}
修改博客
请求:
PUT /blog/:blog_id
{
"title": "备忘录1",
"content": "备忘录的 markdown 格式内容",
"tag_id": 1
}
响应:
HTTP/1.1 200 OK
{
"ok": true,
}
新增标签
请求:
POST /tag
{
"tag_name": "小故事",
}
响应:
HTTP/1.1 200 OK
{
"ok": true,
}
删除标签
请求:
DELETE /tag/:tag_id
响应:
HTTP/1.1 200 OK
{
"ok": true,
}
标签列表(查看所有标签)
请求:
GET /tag
响应:
HTTP/1.1 200 OK
[
{
"tag_id": 1,
"tag_name": 小故事"
},
{
"tag_id": 2,
"tag_name": "有关于他(她)"
}
]