如何摆脱Flask Restful API中的favicon.ico?

时间:2019-07-15 16:29:00

标签: rest flask

我有一个简单的Restful服务,它有些奇怪。代码如下:

from flask import Flask, make_response
from flask_restful import Resource, Api, fields
from get_response_demo import generate_rest_str
import dia_logging

logger = dia_logging.my_logger("api_rest", "demo.log")

app = Flask(__name__)
api = Api(app)

resource_fields = {
    'messages': fields.String,
    'jsons': fields.String,
}

class RestAPI(Resource):
    def get(self, sentence):

        dia_result = generate_rest_str(sentence)
        logger.info(dia_result)

        response = make_response(str(dia_result))
        response.mimetype = 'application/json'
        return response

api.add_resource(RestAPI, '/<string:sentence>')

if __name__ == '__main__':
    app.run(debug=False, use_reloader=False, host='127.0.0.1', port=4000)

以及我向服务请求的方式: http://127.0.0.1:4000/sentence=hello

restful服务托管在Ubuntu计算机上。在我的Mac上,我没有发现问题。问题是,每当我测试对服务的请求时,除了处理参数“句子”发送的实际输入外,每次处理:

INFO:get_response_demo:restful, sentence:favicon.ico

因此,它仅对一个请求处理两次,并且重复处理了“ favicon.ico”。

如何避免这种情况?我是烧瓶新手。

1 个答案:

答案 0 :(得分:0)

您至少有三个选择

  1. @app.route('/favicon.ico')

  2. 之前添加特定的api.add_resource()
  3. 如果您要在nginx或Apache之后运行API,请在网络服务器配置中使用特殊情况的favicon.ico,以使您的Flask代码永远看不到请求

  4. 安排提供来自/api/...

  5. 的API调用

如果您想通过根级URL添加一些管理/监视功能,则后一种方法可以满足您的需求。您可以同时使用#2和#3。