2-6-flask框架-扩展-接口开发-使用flask-restful接口开发
Flask-RESTful
Flask-RESTful是用于快速构建REST API的Flask扩展。
flask-restful官方文档:https://flask-restful.readthedocs.io/en/latest/quickstart.html#a-minimal-api
用flask原生框架和使用flask-restful框架写api接口有什么不一样的吗?
设计理念不同:Flask原生框架的设计理念是灵活多变,开发者可以自由选择路由和请求方式;Flask-RESTful框架的设计理念是专注于RESTful API开发,提供了简单易用的高层抽象。
功能不同:Flask原生框架提供了一些基本的功能,如路由定义,请求方式定义,响应内容定义,但对于复杂的API开发,需要开发者自行实现;Flask-RESTful框架额外提供了一些高级功能,如资源分类,请求参数校验,返回值自动生成,以及API文档自动生成,帮助开发者更快速、高效地开发API。
总的来说,如果您希望快速、高效地开发RESTful API,可以考虑使用Flask-RESTful框架;如果您希望更加灵活、自由地开发API,可以使用Flask原生框架
安装
pip install flask-restful
快速入手
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class HelloWorld(Resource):
def get(self):
return {'hello': 'world'}
api.add_resource(HelloWorld, '/')
if __name__ == '__main__':
app.run(debug=True)
这是官方文档的一个快速入手的案例
- 注:flask_restful中返回的字典类型 可以自动转化为json
flask-restful使用蓝图
那么可以在auth.py 写注册相关的接口
from flask import (
Blueprint, flash, g, redirect, render_template, request, session, url_for
)
from flask_restful import Api, reqparse, abort, Api, Resource
bp = Blueprint('auth', __name__, url_prefix='/auth')
api = Api(bp)
class Register(Resource):
@staticmethod
def password_validate(value, name):
if len(value) < 6 or len(value) > 16:
raise ValueError(name + ' length must be 6-16')
return value
def post(self):
# 校验入参
parser = reqparse.RequestParser()
parser.add_argument('username', required=True, type=str, nullable=False)
parser.add_argument('password', required=True, type=self.password_validate,
nullable=False, help='invalid: {error_msg}')
args = parser.parse_args()
print(f'请求入参:{args}')
return {
"code": 0,
"msg": "success"
}
# 注册
api.add_resource(Register, '/api/register')
技术改变命运