Skip to content
This repository has been archived by the owner on Oct 15, 2023. It is now read-only.
/ mybbs Public archive

mybbs是一个简单的前后端分离项目, 包含前端,后端两部分. 前端使用vuejs实现, 后端使用python3实现.

License

Notifications You must be signed in to change notification settings

uchenily/mybbs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 

Repository files navigation

mybbs

mybbs是一个简单的前后端分离项目, 包含前端,后端两部分. 前端使用vuejs实现, 后端使用python3实现.

mybbs-backend项目

项目说明

该项目是mybbs的后端项目, 采用python开发, 提供RESTful API服务.

项目中使用了轻量级的RESTful开发框架pecan, 数据库orm框架采用的是sqlalchemy.

pecan本身是兼容python2和python3的, 但是由于python2即将不再维护, 项目中使用了python3特有的语法, 如果需要在python2下运行可能需要做部分更改.

快速开始

为了快速搭建一个干净的python环境, 推荐使用python3中的venv模块创建一个python虚拟环境.

# 创建虚拟环境
python3 -m venv virtualenv
# 激活虚拟环境
. virtualenv/bin/activate

# 退出虚拟环境
# deactivate

克隆本项目到本地, 进入到mybbs-backend目录下, 安装(或者调试)项目

cd mybbs-backend

# 安装
# python setup.py install

# 开发调试
python setup.py develop

推荐步骤, 安装watchdog, 对于开发pecan应用十分有用, 可以实现代码热加载.

pip install watchdog

启动项目

pecan serve config.py

# 如果安装了watchdog, 更改代码后自动加载, 不需重启服务
pecan serve config.py --reload

API调用

mybbs-backend默认使用sqlite3的内存数据库模式('sqlite://'), 将数据存储在内存而非文件中, 这样做的好处是在调试时更加方便, 如果需要清空数据库或者更改表结构, 只需要重启web服务即可.

该项目中只提供了RESTful风格的接口, 进行调试需要使用类似curl,postman等RESTful API调试工具.

下面的例子中使用curl进行模拟请求.

用户

创建一个用户

POST /v1/users

curl -X POST http://localhost:8888/v1/users \
-H "Content-Type: application/json" \
-d \
'{
    "user": {
        "username": "test1", 
        "password": "password"
    }
}'

获取用户信息

GET /v1/users/{username}

curl http://localhost:8888/v1/users/test1

获取用户列表

GET /v1/users

curl http://localhost:8888/v1/users

更新用户信息

PUT /v1/users

curl -X PUT http://localhost:8888/v1/users \
-H "Content-Type: application/json" \
-d \
'{
    "user": {
        "username": "another",
        "password": "another"
    }
}'

Token

创建Token, 传递的参数为用户名和密码

POST /v1/tokens

curl -X POST http://localhost:8888/v1/tokens \
-H "Content-Type: application/json" \
-d \
'{
    "data": {
        "username": "test1",
        "password": "password"
    }
}'

根据用户名获取Token

GET /v1/tokens?username={username}

curl http://localhost:8888/v1/tokens?username=test1

获取Token列表

GET /v1/tokens

curl http://localhost:8888/v1/tokens

帖子分类

创建一个分类

POST /v1/categories

curl -XPOST http://localhost:8888/v1/categories \
-H "Content-Type: application/json" \
-d \
'{
    "category": {
        "name": "test-category",
        "description": "this is test description"
    }
}'

获取分类信息

GET /v1/categories

curl http://localhost:8888/v1/categories

帖子

创建一个帖子

POST /v1/topics

curl -XPOST http://localhost:8888/v1/topics \
-H "Content-Type: application/json" \
-d \
'{
    "topic": {
        "title": "test-topic1",
        "author_id": 1,
        "category_id": 1,
        "content": "this is test content1"
    }
}'

获取帖子列表

GET /v1/topics

curl http://localhost:8888/v1/topics

根据flag获取帖子列表

GET /v1/topics?flag={flag}

curl http://localhost:8888/v1/topics?flag=latest

根据category_id获取帖子列表

GET /v1/topics?category_id={category_id}

curl http://localhost:8888/v1/topics?category_id=1

回复

创建一个回复

POST /v1/replies

curl -XPOST http://localhost:8888/v1/replies \
-H "Content-Type: application/json" \
-d \
'{
    "reply": {
        "user_id": 1,
        "topic_id": 1,
        "content": "this is test reply1"
    }
}'

获取回复列表

GET /v1/replies

curl http://localhost:8888/v1/replies

通过topic_id获取对应帖子的回复列表

GET /v1/replies?topic_id={topic_id}

curl http://localhost:8888/v1/replies?topic_id=1

mybbs-frontend项目

项目说明

该项目是mybbs项目的前端部分, 使用vuejs2.x开发, 使用了vue-router做路由, 使用了vuex管理组件状态, 使用了axios库来发送请求. 为了简洁, 没有使用其他任何依赖.

项目依赖于node环境, 需要预先安装. 另外, 项目使用yarn作为node包管理工具, 也需要进行安装.

快速开始

克隆本项目到本地, 进入到mybbs-frontend目录下.

cd mybbs-frontend

安装依赖

yarn install

自行更改下载源以提高下载速度.

启动项目

yarn run dev

# 默认访问地址
# 用户
# http://localhost:8080
# 管理员
# http://localhost:8080/#/admin

About

mybbs是一个简单的前后端分离项目, 包含前端,后端两部分. 前端使用vuejs实现, 后端使用python3实现.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published