如何解决Flask REST API中的404页面未找到错误
Flask REST API 404错误解决方法
核心问题
你在初始化Flask应用和Api之后,提前调用了app.run(host='0.0.0.0',port=8080),这行代码会启动Web服务器并阻塞后续所有代码的执行。这导致后面的api.add_resource(advert,'/data',methods=['POST'])路由注册逻辑从未被执行,服务器根本不知道/data这个端点的存在,所以请求会返回404。
修复步骤
- 移除提前启动服务器的代码:删掉初始化部分的
app.run(host='0.0.0.0',port=8080),只保留if __name__=='__main__':代码块里的启动逻辑,并把端口和host参数移到这里。 - 修正OpenAI响应处理逻辑:你当前对OpenAI返回结果的处理存在错误,
response本身就是一个可直接访问属性的对象,不需要转成字符串再用json.loads解析;最后解析advert_output的代码完全错误,因为它是纯文本,不是JSON格式。
修正后的完整代码
from flask import Flask, request from flask_cors import CORS import openai from flask_restful import Api, Resource import json # 初始化应用 app = Flask(__name__) CORS(app) api = Api(app) # OPENAI凭证(请填入你的有效密钥) openai.api_key = "你的OpenAI密钥" class advert(Resource): def post(self): try: request_body = request.json A = request_body["data"] adprompt = "Write an advertisement for " + A response = openai.Completion.create( engine="text-davinci-002", prompt=adprompt, temperature=0.7, max_tokens=70, top_p=1.0, n=1 ) # 直接访问response的属性,无需转字符串解析 advert_output = response['choices'][0]['text'].strip() # 返回结构化JSON return {"advertisement": advert_output}, 200 except Exception as e: # 打印异常方便调试 print(f"错误详情: {str(e)}") return {"ERROR": "Error Occurred"}, 500 # 注册路由 api.add_resource(advert, '/data', methods=['POST']) if __name__ == '__main__': # 在这里启动服务器,指定host和端口 app.run(host='0.0.0.0', port=8080, debug=True)
额外说明
- 确保你的OpenAI密钥已正确填写,否则会触发500错误。
- 调试时开启
debug=True,可查看详细错误信息。 - 捕获具体
Exception并打印详情,有助于快速定位问题。
内容的提问来源于stack exchange,提问作者Narashimhaa Kannan
相关产品推荐
相关产品推荐

