Flask-RESTPlus

说明

  • 是一个专门用来开发rest api的扩展库,基本功能与Flask-RESTful无异,但是比其更强大

安装

  • pip install flask-restplus

文档

使用

  • 基本使用
from flask_restplus import Api, Resource

# 创建接口对象
api = Api(app)

# 使用装饰器将资源添加到接口:可以指定多个路由
@api.route('/users/<int:uid>', '/u/<int:uid>')
# 创建资源类:必须继承自Resource
class UserAPI(Resource):
    def get(self, uid):
        # 返回字典对象:扩展会自动将其转换为JSON数据
        return {'UserAPI': 'GET'}, 200

    def put(self, uid):
        return {'UserAPI': 'PUT'}

    def delete(self, uid):
        return {'UserAPI': 'DELETE'}


# 一个完整的资源通常有两个资源类完成
class UserListAPI(Resource):
    def get(self):
        return {'UserListAPI': 'GET'}

    def post(self):
        return {'UserListAPI': 'POST'}

# 使用专门的函数将资源类添加到接口:可以指定多个路由
api.add_resource(UserListAPI, '/users/', '/u/')
  • 目录结构
project/
├── app.py
├── core
│   ├── __init__.py
│   ├── utils.py
│   └── ...
└── apis
    ├── __init__.py
    ├── namespace1.py
    ├── namespace2.py
    ├── ...
    └── namespaceX.py
  • 其中的一个资源示例namespace1.py
from flask_restplus import Namespace, Resource, fields

api = Namespace('cats', description='Cats related operations')

CATS = [
    {'id': 'felix', 'name': 'Felix'},
]

@api.route('/')
class CatList(Resource):
    def get(self):
        '''List all cats'''
        return CATS

@api.route('/<id>')
class Cat(Resource):
    def get(self, id):
        '''Fetch a cat given its identifier'''
        return {'id': 'felix', 'name': 'Felix'}
  • apis.__init__模块内容如下:
from flask_restplus import Api

from .namespace1 import api as ns1
from .namespace2 import api as ns2
# ...
from .namespaceX import api as nsX

api = Api(
    title='My Title',
    version='1.0',
    description='A description',
    # All API metadatas
)

api.add_namespace(ns1, path='/prefix/of/ns1')
api.add_namespace(ns2, path='/prefix/of/ns2')
# ...
api.add_namespace(nsX, path='/prefix/of/nsX')
  • app.py模块中这样使用
from flask import Flask
from apis import api

app = Flask(__name__)
api.init_app(app)

app.run(debug=True)

推荐

results matching ""

    No results matching ""