GO语言笔记服务项目(5)|青训营笔记

267 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第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后的内容

image.png

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的项目代码与逻辑,自己构建并成功跑通了项目,期间收获满满,本打算一气呵成写完此系列文章,奈何时间原因每天只能写一点,还望读者海涵。

参考文档