初尝后端:开发评论系统
Outline

之前在写前端的时候,单测一直是一个我很忽略的东西。前端非常直观,所见即所得,点两下有问题也就出现了,没了也就没了。 但后端不一样,后端想要看到运行结果如何,那就要自己拼http请求,各种传参,返回值也是一团乱的json。 不仅操作没前端便捷,看到的结果也不直观,没有单测就是在盲人摸象。 这时候单测自己封装请求,发请求就会容易得多。自定义返回值处理逻辑和断言,也比直接看返回值更清晰了。

我选择的是FastAPI,这是一个原生支持异步的Python后端框架,性能非常好,语法也很简洁。 早些年听说FlaskDjango的异步都比较弱,于是选择了FastAPI。 更巧的是,它的依赖注入和NoneBot的依赖注入非常相似,也都拿Pydantic处理数据,让我感到一股莫名的亲切感。 总觉得早期的NoneBot就是模仿FastAPI写的

FastAPI
avatarFastAPI 框架,高性能,易于学习,高效编码,生产可用

之前用nonebot-plugin-orm的时候,数据库迁移时不检查表里面有没有东西就直接删,给我搞出来心理阴影了...所以SQLAlchemy我不想碰了。 django-orm又是集成在Django里的,我又不用Django,所以也排除再外了。 想起来之前在群里有人推荐过Tortoise-ORM,它和django-orm比较像。就选它了!

Tortoise ORM
avatarTortoise ORM is an easy-to-use `asyncio` ORM (Object Relational Mapper) inspired by Django.

REST Client是一个非常好用的VSCode插件,可以直接在编辑器里写HTTP请求,发送请求,并查看响应结果。 它是直接集成在VSCode里的,不需要下载安装,不需要登陆注册。

Http
@host=http://127.0.0.1:8000
@key=default_key

# 全站访问者数量
GET {{host}}/visitors
Authorization: Bearer {{key}}

###

# 当前页面访问者路径
GET {{host}}/visitors/test/path1
Authorization: Bearer {{key}}

在你要测试的API上面按下Ctrl+Alt+R就可以发送请求了,非常方便。

返回结果

在对于后端开发来说,这个插件简直就是神器了。

vscode-restclient
2026/3/2
 5.9k 576 510
Huachao Mao
avatar
REST Client Extension for Visual Studio Code
 5.9k 576 510

SQLite3 Editor也是一个VSCode插件,可以直接在编辑器里查看和编辑SQLite数据库。 它功能也很强大,支持SQL查询,表格视图,数据编辑等功能,最重要的是它免费。 我之前一直在用的SQLite Viewer不知道什么时候就变成了收费插件了,虽然功能更强大,但我觉得不太划算了。 于是就来SQLite3 Editor避难了。

sqlite3-editor
2026/3/2
 2.4k 2 21
yy0931
avatar
暂无描述
 2.4k 2 21

这次的评论系统开发,不仅让我对后端开发有了基本了解,还让我体会到了单测的重要性。 这次开发的评论系统让我最得意的一点是它具有渲染扩展组件的能力,可以增强评论的表现力和交互性。 最后,附上磕磕绊绊写的石山后端代码……

blog-backend
2026/3/2
 0 0 0
Mr.Lee
avatar
给博客写的后端,通过Python + FastApi实现
 0 0 0

该评论是基于Markdown语法外加一些扩展组件。不会Markdown语法看下面的网站介绍。

Markdown 教程
avatarMarkdown 基本语法
Markdown
:github-card{repo=chzxxuanzheng/The-World-Of-Lee}
The-World-Of-Lee
2026/3/2
 1 0 1
Mr.Lee
avatar
个人博客
 1 0 1
Markdown
::share-card
---
content: '分享卡片的内容,这个卡片会打开example.com'
url: 'example.com'
author: '作者'
website: '诶可然亩博'
img: 'https://leenet.xyz/favicon.svg'
---
::

诶可然亩博
作者
avatar分享卡片的内容,这个卡片会打开example.com
Markdown
::box
这是一个盒子,可以用来放一些东西

    :::box{corner}
    方角盒子
    :::

#top-left
左上角
#top-right
右上角
#bottom-left
左下角
#bottom-right
右下角
::

左上角

右上角

左下角

右下角

这是一个盒子,可以用来放一些东西

方角盒子

Markdown
::info
这是扩展知识
::

::tip
这是一条提示
::

::warning
这样做很危险
::

::danger
这样做很危险
::

INFO

这是扩展知识

TIP

这是一条提示

WARNING

这样做很危险

DANGER

这样做很危险

可以通过在提示框后面添加{title=标题}来指定标题

Markdown
::info{title=标题}
这是一个被指定了标题的提示框
::

标题

这是一个被指定了标题的提示框

Markdown
:hide[才不是从萌娘哪里抄的]
才不是从萌娘哪里抄的
Markdown
:lang{l=vue}
Vue

INFO

本文章采用     CC BY-NC-SA 4.0 协议进行许可。如需转载,请注明出处。
评论
0 /1000
c9edd19
Post.vue
utf-8
TOP
1:1