import tornado.web
import tornado.ioloop
import tornado.httpserver
import tornado.options
from tornado.options import options, define
from tornado.web import RequestHandler
from motor.motor_asyncio import AsyncIOMotorClient
import json
define("port", default=8000, type=int, help="服务器监听端口号")
conn = AsyncIOMotorClient()
db = conn.XM
class IndexHandler(RequestHandler):
# 查询
async def get(self, user_id):
# 获取参数
name = self.get_argument('name', None)
# 如果有参数
if name:
# 进入数据库查询
data = await db.aaa.find_one({'name': name}, {'_id': 0})
# 如果查询结果存在
if data:
# 返回查询结果
self.write({'code': 200, 'data': {'data': data}})
else:
# 如果查询结果不存在
# 返回信息错误
self.write({'code': 405, 'data': {'msg': '信息错误'}})
# 如果没有查询条件
else:
data_list = []
# 查询所有用户
find_datas = db.aaa.find({}, {'_id': 0})
# 处理查询到的结果集,并添加到列表data_list中
async for i in find_datas:
data_list.append(i)
# 返回查询到的所有用户信息
self.write({'code': 200, 'data': {'data': data_list}})
# 添加新用户
async def post(self, user_id, *args, **kwargs):
# 获取参数
name = self.get_argument('name', None)
age = self.get_argument('age', None)
# 查询该用户是否已存在
find_data = await db.aaa.find_one({'name': name})
# 如果存在
if find_data:
# 返回重复添加
self.write({'code': 404, 'data': {'msg': '数据已存在,请勿重复添加'}})
# 如果不存在
else:
# 将新的用户信息写入到数据库中
userID = db.aaa.insert_one({'name': name, 'age': age})
print(userID)
# 返回添加成功的用户信息
self.write({'code': 200, 'data': {'data': {'name': name, 'age': age}}})
# 修改操作
async def put(self, user_id, *args, **kwargs):
# 该数据是从body中获取的,所以需要解码,并使用json.loads转换成对应格式(此处为dict)
update_data = json.loads(self.request.body.decode('utf-8'))
# 从dict中获取参数
name, gender = update_data['name'], update_data['gender']
# 查询该用户是否存在
user = await db.aaa.find_one({'name': name})
# 如果该用户存在,并且修改的信息也存在
if user and gender:
# 对此用户进行修改操作
await db.aaa.update_many({'name': name}, {"$set": {"gender": gender}})
# 返回该用户的最新信息
self.write({'code': 200, 'data': {'data': {'name': name, 'gender': gender}}})
# 如果不存在
else:
# 返回错误信息
self.write({'code': 404, 'data': {'msg': '信息异常,修改失败'}})
# 删除操作
async def delete(self, user_id, *args, **kwargs):
# 获取参数
del_name = self.get_argument('name', None)
# 查询该用户是否存在
find_del_name = await db.aaa.find_one({'name': del_name})
# 如果存在
if find_del_name:
# 使用remove进行删除(3.2版本之前用remove删除,3.2之后版本使用deleteOne删除)
db.aaa.remove({'name': del_name})
# 返回删除成功消息
self.write({'code': 200, 'data': {'msg': '删除成功'}})
# 如果该用户不存在
else:
# 返回错误信息
self.write({'code': 404, 'data': {'msg': '信息错误'}})
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application([
(r"/api/([a-fA-F0-9]{24})?", IndexHandler),
])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.current().start()
tornado测试小demo
最新推荐文章于 2021-01-17 17:02:27 发布