@ app.route возвращает html, а @ api.route возвращает строку - PullRequest
0 голосов
/ 19 февраля 2019

Я использую 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 возвращает строку

1 Ответ

0 голосов
/ 19 февраля 2019

Вот код:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...