项目目录
__init__
.py文件:
#放置用户蓝图,包括用户模块的所有资源
from flask import Blueprint
from flask_restful import Resource,Api
#创建蓝图
user_bp=Blueprint('user',__name__)
#定义flask_restful的api
user_api=Api(user_bp)
#加载资源
from shop.rescoures.user.user_resource import Shoping
user_api.add_resource(Shoping,'/hello',endpoint='user')
user_resource.py
文件
#定义蓝图视图
from flask_restful import Resource,Api
#定义资源
class Shoping(Resource):
def get(self):
return {"hello":"test"}
#shop目录中放置项目的蓝图
from flask import Flask
from settings.default import map_config
from rescoures.user import user_bp
from rescoures.order import order_bp
def app_config(config_type):
app=Flask(__name__)
app.config.from_object(map_config.get(config_type))
#注册蓝图
app.register_blueprint(user_bp,url_prefix='/user')
app.register_blueprint(order_bp,url_prefix='/order')
return app
访问资源:
需求
想要接口返回的JSON数据具有如下统一的格式
{"message": "描述信息", "data": {要返回的具体数据}}
解决
Flask-RESTful的Api对象提供了一个representation的装饰器,允许定制返回数据的呈现格式
封装到项目的公共模块中,让所有的接口返回的数据都为JSON统一的格式
output.py文件
from flask import make_response, current_app
from flask_restful.utils import PY3
from json import dumps
#todo 将字典格式的响应数据转化为json格式的响应数据
def output_json(data, code, headers=None):
"""Makes a Flask response with a JSON encoded body"""
#此处添加自己定义的json格式规则
if 'message' not in data:
data={
'message':'OK',
'data':data
}
settings = current_app.config.get('RESTFUL_JSON', {})
# If we're in debug mode, and the indent is not set, we set it to a
# reasonable value here. Note that this won't override any existing value
# that was set. We also set the "sort_keys" value.
if current_app.debug:
settings.setdefault('indent', 4)
settings.setdefault('sort_keys', not PY3)
# always end the json dumps with a new line
# see https://github.com/mitsuhiko/flask/pull/1262
dumped = dumps(data, **settings) + "\n"
resp = make_response(dumped, code)
resp.headers.extend(headers or {})
return resp
在定义蓝图的文件中__init__.py调用
#放置用户蓝图,包括用户模块的所有资源
from flask import Blueprint
from flask_restful import Resource,Api
from comment.utils.output import output_json
#创建蓝图
user_bp=Blueprint('user',__name__)
#定义flask_restful的api
user_api=Api(user_bp)
#使用我们自己定义的json格式,替代装饰器写法
user_api.representation('application/json')(output_json)
#加载资源
from shop.rescoures.user.user_resource import Shoping
user_api.add_resource(Shoping,'/hello')
访问资源
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74146.html