Flask-RESTplus 中的响应 class
Response class in Flask-RESTplus
在 Flask-RESTplus 中处理响应 类 的正确方法是什么?
我正在试验一个简单的 GET 请求,如下所示:
i_throughput = api.model('Throughput', {
'date': fields.String,
'value': fields.String
})
i_server = api.model('Server', {
'sessionId': fields.String,
'throughput': fields.Nested(i_throughput)
})
@api.route('/servers')
class Server(Resource):
@api.marshal_with(i_server)
def get(self):
servers = mongo.db.servers.find()
data = []
for x in servers:
data.append(x)
return data
我想 return 我的数据作为响应对象的一部分,如下所示:
{
status: // some boolean value
message: // some custom response message
error: // if there is an error store it here
trace: // if there is some stack trace dump throw it in here
data: // what was retrieved from DB
}
我是 Python 的新手,也是 Flask/Flask-RESTplus 的新手。那里有很多教程和信息。我最大的问题之一是我不确定要准确搜索什么才能获得我需要的信息。另外,这如何与编组一起工作?如果有人可以 post 好的文档或优秀的 API 的示例,将不胜感激。
https://blog.miguelgrinberg.com/post/customizing-the-flask-response-class
from flask import Flask, Response, jsonify
app = Flask(__name__)
class CustomResponse(Response):
@classmethod
def force_type(cls, rv, environ=None):
if isinstance(rv, dict):
rv = jsonify(rv)
return super(MyResponse, cls).force_type(rv, environ)
app.response_class = CustomResponse
@app.route('/hello', methods=['GET', 'POST'])
def hello():
return {'status': 200, 'message': 'custom_message',
'error': 'error_message', 'trace': 'trace_message',
'data': 'input_data'}
结果
import requests
response = requests.get('http://localhost:5000/hello')
print(response.text)
{
"data": "input_data",
"error": "error_message",
"message": "custom_message",
"status": 200,
"trace": "trace_message"
}
在 Flask-RESTplus 中处理响应 类 的正确方法是什么? 我正在试验一个简单的 GET 请求,如下所示:
i_throughput = api.model('Throughput', {
'date': fields.String,
'value': fields.String
})
i_server = api.model('Server', {
'sessionId': fields.String,
'throughput': fields.Nested(i_throughput)
})
@api.route('/servers')
class Server(Resource):
@api.marshal_with(i_server)
def get(self):
servers = mongo.db.servers.find()
data = []
for x in servers:
data.append(x)
return data
我想 return 我的数据作为响应对象的一部分,如下所示:
{
status: // some boolean value
message: // some custom response message
error: // if there is an error store it here
trace: // if there is some stack trace dump throw it in here
data: // what was retrieved from DB
}
我是 Python 的新手,也是 Flask/Flask-RESTplus 的新手。那里有很多教程和信息。我最大的问题之一是我不确定要准确搜索什么才能获得我需要的信息。另外,这如何与编组一起工作?如果有人可以 post 好的文档或优秀的 API 的示例,将不胜感激。
https://blog.miguelgrinberg.com/post/customizing-the-flask-response-class
from flask import Flask, Response, jsonify
app = Flask(__name__)
class CustomResponse(Response):
@classmethod
def force_type(cls, rv, environ=None):
if isinstance(rv, dict):
rv = jsonify(rv)
return super(MyResponse, cls).force_type(rv, environ)
app.response_class = CustomResponse
@app.route('/hello', methods=['GET', 'POST'])
def hello():
return {'status': 200, 'message': 'custom_message',
'error': 'error_message', 'trace': 'trace_message',
'data': 'input_data'}
结果
import requests
response = requests.get('http://localhost:5000/hello')
print(response.text)
{
"data": "input_data",
"error": "error_message",
"message": "custom_message",
"status": 200,
"trace": "trace_message"
}