使用 VueJS、Flask 和 RethinkDB 构建简单文件存储服务的简介和设置
介绍
在本指南中,我将向您展示如何构建一个简单的文件存储服务。我们将使用 VueJS 来处理前端交互,使用 Flask 来处理后端,使用 RethinkDB 来存储数据库。我将在过程中介绍一些工具,敬请期待。
在本系列指南的第一部分中,我将重点介绍如何构建应用程序的后端。稍后,我将介绍如何在您当前的工作流程中实施本文所教授的一些原则,无论是作为 Python 开发人员、Flask 开发人员,还是作为普通程序员。
构建 API
让我们从构建 API 开始。使用此文件存储服务,作为用户,我们应该能够:
- 创建一个帐户
- 登录
- 创建和管理文件夹和子文件夹
- 将文件上传到文件夹
- 查看文件属性
- 编辑和删除文件
对于 API,我们应该有以下端点:
- POST /api/v1/auth/login-此端点将用于登录用户
- POST /api/v1/auth/register-此端点将用于注册用户
- GET /api/v1/user/<user_id>/files/ - 此端点将用于列出用户 ID 为user_id的用户的文件
- POST /api/v1/user/<user_id>/files/ - 此端点将用于为用户 ID 为user_id的用户创建新文件
- GET /api/v1/user/<user_id>/files/<file_id> - 此端点将用于获取 id 为file_id的单个文件
- PUT /api/v1/user/<user_id>/files/<file_id> - 此端点将用于编辑 id 为file_id的单个文件
- DELETE /api/v1/user/<user_id>/files/<file_id> - 此端点将用于删除 id 为file_id 的单个文件
好的,我们已经确定了创建此应用所需的 API 端点。现在,我们需要开始创建端点的实际过程。让我们开始吧。
设置
您应该首先创建一个项目目录。这是我们应用程序的推荐结构:
-- /api
-- /controllers
-- /utils
-- models.py
-- __init__.py
-- /templates
-- /static
-- /lib
-- /js
-- /css
-- /img
-- index.html
-- config.py
-- run.py
API 的模块和包将放入/api目录中,其中模型存储在models.py模块中,控制器(主要用于路由目的)作为模块存储在/controllers包中。
我们将把路由和应用程序创建函数添加到/api/__init__.py。这样,我们就可以使用create_app()函数创建具有不同配置的多个应用程序实例。这在为应用程序编写测试时特别有用。
from flask import Flask, Blueprint
from flask_restful import Api
from config import config
def create_app(env):
app = Flask(__name__)
app.config.from_object(config[env])
api_bp = Blueprint('api', __name__)
api = Api(api_bp)
# Code for adding Flask RESTful resources goes here
app.register_blueprint(api_bp, url_prefix="/api/v1")
return app
从这里可以看到,我们创建了一个带有env参数的create_app()函数。理想情况下,env应该是development、production和testing之一。使用为env提供的值,我们将加载特定配置。此配置信息作为类字典存储在config.py中。
class Config(object):
DEBUG = True
TESTING = False
DATABASE_NAME = "papers"
class DevelopmentConfig(Config):
SECRET_KEY = "S0m3S3cr3tK3y"
config = {
'development': DevelopmentConfig,
'testing': DevelopmentConfig,
'production': DevelopmentConfig
}
目前,我们仅指定了一些配置参数,例如DEBUG参数,该参数指示 Flask 是否在调试模式下运行。我们还指定了DATABASE_NAME参数(我们将在模型中引用该参数)和用于生成 JWT 令牌的SECRET_KEY参数。到目前为止,我们对所有环境都使用了相同的设置。
如您所见,我们使用 Flask Blueprint 来版本化我们的 API,以防我们需要在不影响用户的情况下更改核心功能的实现。我们还初始化了api,一个 Flask-RESTful API 对象。稍后,我将向您展示如何使用此对象向我们的应用程序添加新的 API 端点。
接下来,我们将运行服务器的代码放入根目录中的run.py。我们将使用 Flask-Script 为我们的应用程序创建额外的 CLI 命令。
from flask_script import Manager
from api import create_app
app = create_app('development')
manager = Manager(app)
@manager.command
def migrate():
# Migration script
pass
if __name__ == '__main__':
manager.run()
在这里,我们使用了flask_script.Manager类来抽象服务器的运行,并使我们能够为 CLI 添加新命令。migrate ()将用于自动创建模型所需的所有表。目前这是一个简化的解决方案。如果一切顺利,您应该不会遇到任何错误。
现在,我们可以进入命令行并运行python run.py runserver在默认端口5000上运行服务器。
下一步
继续阅读本系列的下一篇指南,了解用户模型和身份验证控制器。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~