Flask服务器对"/predict"端点的POST请求返回"方法不允许"错误

-1 投票
1 回答
29 浏览
提问于 2025-04-12 16:09

我有一个Flask服务器,里面有一个叫做"/predict"的接口,用来处理POST请求。但是,当我从前端发送POST请求到这个接口时,服务器却返回了一个“方法不允许”的错误(HTTP状态码405)。前端代码是正确发送POST请求的,而且CORS(跨域资源共享)也配置得很好。我本来希望服务器能接受这个POST请求,并返回一个包含预测结果的响应。

加载资源失败:服务器返回了405(方法不允许)的状态 chatbot.js:65 错误:语法错误:JSON输入意外结束 在chatbot.js:57:22

我确认了前端代码确实是向正确的接口("/predict")发送了POST请求。 我也确认了Flask服务器上的CORS配置是正确的。

from flask import Flask, render_template, request, jsonify
from flask_cors import CORS
from chat import get_response

app = Flask(__name__)
CORS(app)

@app.post("/predict")
def predict():
    text = request.get_json().get("message")
    print("Received message:", text)
    response = get_response(text)
    message = {"answer": response}
    return jsonify(message)


if __name__ == "__main__":
    app.run(debug=True)

下面是我的chatbot.js文件,里面有POST方法的代码

fetch("/predict", {
  method: "POST",
  body: JSON.stringify({ message: text1 }),
  mode: "cors",
  headers: {
    "Content-Type": "application/json",
  },
})
  .then((r) => r.json())
  .then((r) => {
    let msg2 = { name: "Sam", message: r.answer };
    this.messages.push(msg2);
    this.updateChatText(chatbox);
    textField.value = "";
  })
  .catch((error) => {
    console.error("Error:", error);
    this.updateChatText(chatbox);
    textField.value = "";
  });

1 个回答

1

正如 @pptx704 提到的,你可能忘记指定方法了。

@app.route('/predict', methods = ['GET', 'POST'])
def predict():

撰写回答