[英]@app.route returns html and @api.route returns string
我使用Flask設置API。 對於一些簡單的測試,我返回html標簽。 但是,使用Flask_restplus返回一個字符串。 我想知道為什么以及如何更改此設置? 當然,我可以使用Jinja,但我想在這個小示例中知道如何更改此設置。
from flask import Flask, request
from flask_restplus import Resource, Api, fields
app = Flask(__name__)
api = Api(app)
# This code returns HTML
@app.route('/test1')
def language():
language = request.args.get('language')
message = '<h1>Hello world! I speak {}</h1>'.format(language)
return message
# This code returns string e.g. '<h1>Hello wolrd! I speak english</h1>
@api.route('/hello')
class HelloWorld(Resource):
def get(self):
language = request.args.get('language')
message = '<h1>Hello world! I speak {}</h1>'.format(language)
return message
if __name__ == '__main__':
app.debug = True
app.run(port=4996)
如評論所示,@ app.route返回html,而@ api.route返回字符串
這是代碼:
from flask import Flask, request, jsonify, Response
from flask_restplus import Resource, Api, fields
app = Flask(__name__)
api = Api(app)
# This code returns HTML
@app.route('/test1')
def language():
language = request.args.get('language')
message = '<h1>Hello world! I speak {}</h1>'.format(language)
return message
def output_html(data, code, headers=None):
resp = Response(data, mimetype='text/html', headers=headers)
resp.status_code = code
return resp
# This code returns string e.g. '<h1>Hello wolrd! I speak english</h1>
@api.route('/hello')
class HelloWorld(Resource):
def get(self):
language = request.args.get('language')
message = '<h1>Hello world! I speak {}</h1>'.format(language)
return output_html(message, 200)
if __name__ == '__main__':
app.debug = True
app.run(port=4996)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.