You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决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。

修复步骤

  1. 移除提前启动服务器的代码:删掉初始化部分的app.run(host='0.0.0.0',port=8080),只保留if __name__=='__main__':代码块里的启动逻辑,并把端口和host参数移到这里。
  2. 修正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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:10:19