这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记
在第六次课中来自字节跳动的老师为我们耐心讲解了一个用go语言实现的笔记服务demo,在课后我尝试自己复现了一遍这个demo进行学习,这里简要记录一下学习经验与心得体会。
书接上回,我们讲到了笔记服务的项目代码构建,今天继续看最后的部分。
项目运行
运行基础依赖
sudo docker-compose up
执行上述命令启动 MySQL、Etcd、Jaeger 的 docker 镜像
运行 demonote 服务
cd cmd/note
sh build.sh
sh output/bootstrap.sh
运行 demouser 服务
cd cmd/user
sh build.sh
sh output/bootstrap.sh
运行 demoapi 服务
cd cmd/api
chmod +x run.sh
sh run.sh
使用postman测试
由于没有为此项目编写前端,在成功运行笔记服务后,我们可以使用postman进行测试该服务的功能。
- 也可直接用命令行输入,效果相似。
- 注意替换$token等字段
- 正确设置POST、PUT等请求
- 在POST之后填入网址
- 在Headers中填入键值对
- 在body->raw中输入data-raw后的内容
Register
用于注册用户
curl --location --request POST '127.0.0.1:8080/v1/user/register' \
--header 'Content-Type: application/json' \
--data-raw '{
"username":"kinggo",
"password":"123456"
}'
response
{
"code": 0,
"message": "Success",
"data": null
}
Login
用于登录用户,会返回一个jwt token
curl --location --request POST '127.0.0.1:8080/v1/user/login' \
--header 'Content-Type: application/json' \
--data-raw '{
"username":"kinggo",
"password":"123456"
}'
response
{
"code": 200,
"expire": "2022-01-19T01:56:46+08:00",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NDI1Mjg2MDYsImlkIjoxLCJvcmlnX2lhdCI6MTY0MjUyNTAwNn0.k7Ah9G4Enap9YiDP_rKr5HSzF-fc3cIxwMZAGeOySqU"
}
在这里可以将token复制下来,用于替换后续操作中的$token
Create Note
用于创建笔记,需要登录用户的token
curl --location --request POST '127.0.0.1:8080/v1/note' \
--header 'Authorization: Bearer $token' \
--header 'Content-Type: application/json' \
--data-raw '{
"title":"test title",
"content":"test content"
}'
response
{
"code": 0,
"message": "Success",
"data": null
}
Query Note
用于查询用户的笔记,同样需要token,会返回一个notes列表。
curl --location --request GET '127.0.0.1:8080/v1/note/query?offset=0&limit=20&search_keyword=test' \
--header 'Authorization: Bearer $token'
response
{
"code": 0,
"message": "Success",
"data": {
"notes": [
{
"note_id": 1,
"user_id": 1,
"user_name": "kinggo",
"user_avatar": "test",
"title": "test title",
"content": "test content",
"create_time": 1642525063
}
],
"total": 1
}
}
Update Note
同于更新笔记内容
curl --location --request PUT '127.0.0.1:8080/v1/note/$note_id' \
--header 'Authorization: Bearer $token' \
--header 'Content-Type: application/json' \
--data-raw '{
"title":"test",
"content":"test"
}'
这里在PUT中指定要更新的笔记的note_id
response
{
"code": 0,
"message": "Success",
"data": null
}
Delete Note
用于删除指定笔记。
curl --location --request DELETE '127.0.0.1:8080/v1/note/$note_id' \
--header 'Authorization: Bearer $token'
response
{
"code": 0,
"message": "Success",
"data": null
}
感想
看了好几天,总算看懂了easynote的项目代码与逻辑,自己构建并成功跑通了项目,期间收获满满,本打算一气呵成写完此系列文章,奈何时间原因每天只能写一点,还望读者海涵。