简体   繁体   English

@ app.route返回html,@ api.route返回字符串

[英]@app.route returns html and @api.route returns string

I use Flask for setting up APIs. 我使用Flask设置API。 For some simple tests I return html tags. 对于一些简单的测试,我返回html标签。 Using Flask_restplus however returns a string. 但是,使用Flask_restplus返回一个字符串。 I would like to know why and how I could change this? 我想知道为什么以及如何更改此设置? Of course I could use Jinja but I'd like to know how to change this in this small example. 当然,我可以使用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)

As commented @app.route returns html and @api.route returns a string 如评论所示,@ app.route返回html,而@ api.route返回字符串

Here is the code: 这是代码:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM