一、开发工具
1、flask框架
(1)简单、灵活但功能完善的web开发框架
(2)项目中用于接收前端与会话有关的请求并相应,主要支持会话id生成、会话内容存储、会话查询、会话删除等功能。
2、mongoDB
(1)面向文档的 NoSQL 数据库管理系统,高性能、高可用、易扩展,适用于处理大量的非结构化和半结构化数据。
(2)非常适合存储会话这样的半结构化数据。
二、后端项目结构
- util:内含Result.py文件,用于包装响应数据,如
#包装正常讯息 def wrap_result(data): return jsonify({"code": 200, "data": data}) ok=wrap_result
- data:
- init.py:数据库连接接口
- conversation_service.py:数据库操作接口,如会话保存:
def save(conv): collection = get_database().conversation conv_exist = collection.find_one({"_id": conv["_id"]}) return collection.insert_one(conv) if conv_exist is None \ else collection.find_one_and_replace({"_id": conv["_id"]}, conv)
- database.py:数据库类包装
import pymongo class database(object): def __init__(self): self.host = "localhost" self.port = 27017 self.databaseName = "项目实训" self.companyId = None self.func_dict = {"--host": self.set_host,"--port": self.set_port, "--databaseName": self.set_database} def set_username(self, value): self.username = value def set_password(self, value): self.password = value def set_host(self, value): self.host = value def set_port(self, value): self.port = value def set_database(self, value): self.databaseName = value def set_company_id(self, value): self.companyId = value def call(self, opts): for opt in opts: self.set_key(opt) def set_key(self, opt): key, value = opt if value and isinstance(value, str): value = value.strip() self.func_dict[key](value) def valid(self): return self.host is not None and \ self.port is not None and \ self.databaseName is not None def get_database(self): conn = pymongo.MongoClient( f'mongodb://{self.host}:{self.port}/{self.databaseName}?authSource=admin') return conn[self.databaseName]
- main.py:采用flask框架,响应前端请求,实现数据的增删改查。如会话获取:
@app.route("/conv/<cid>", methods=['GET']) def conv(cid): conversation = conv_service.get_by_id(cid) return ok(conversation)