Flask服务器对"/predict"端点的POST请求返回"方法不允许"错误
我有一个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():