问题描述
我在Python Flask中编写了一个POST端点,以字符串形式(不带引号)获得响应OK。但是,在测试API后,API会以“确定”(带引号)响应。 Ipkiss Tester中的结果如下:
*❌ Reset state before starting tests
POST /reset
Expected: 200 OK
Got: 200 "OK"
是否有解决此问题的建议?。
谢谢。
代码下方:
from flask import Flask,request,jsonify
from flask_restful import abort,Api,reqparse,Resource
from flask_api import status
class AccountModel:
def __init__(self,accnum):
# We will automatically generate the new id
self.id = accnum
self.balance = 0
class AccountManager():
def __init__(self):
self.accounts = {}
def delete_accounts(self):
if not bool(self.accounts):
del self.accounts
self.accounts = {}
account_manager = AccountManager()
class ResetAccount(Resource):
def post(self):
if str(request.url_rule) =="/reset":
account_manager.delete_accounts()
return "OK",status.HTTP_200_OK
else:
abort(
status.HTTP_404_NOT_FOUND,message=str(status.HTTP_404_NOT_FOUND) + " " + "0".format())
app = Flask(__name__)
service = Api(app)
service.add_resource(ResetAccount,'/reset',endpoint='reset_endpoint')
if __name__ == '__main__':
app.run(debug=True)
解决方法
感谢您@zvone的评论。
它是根据How to return plain text from flask endpoint? Needed by Prometheus中描述的解决方案解决的。
解决方案是使用“ flask.make_response”并定义“ response.mimetype =“ text / plain””,如参考文献中所述