关于#python#的问题:Flask框架模型部署

Flask框架模型部署,运行后访问http://127.0.0.1:8000/api/testpost,报错Method Not Allowed
The method is not allowed for the requested URL.

import joblib
from gevent import pywsgi
from flask import Flask, jsonify, request
import json
import requests

app = Flask(__name__)

@app. route('/')
def index():
    return "Hello,world!"

getMSG={'travel':'0','game':'0','icecream':'0'}


@app. route('/api/testpost',methods=['POST'])
def testPost():
    getMSG['travel']=request.json['travel']
    getMSG['game']=request.json['game']
    getMSG['icecream']=request.json['icecream']
    return jsonify(getMSG)

if __name__=='__main__':
    # server = pywsgi.WSGIServer(('0.0.0.0',5000),app)
    # server.serve_forever()
    app.run(host='0.0.0.0',port=8000)






img

参考gpt:
报错 "Method Not Allowed" 表示请求的方法在指定的 URL 上不被允许。根据你提供的代码,问题可能出在以下几个方面:

  1. 请求方式不匹配:你的代码中,/api/testpost 路由仅允许 POST 请求,而你可能在浏览器中直接访问了该 URL,这将默认使用 GET 请求。确保你在浏览器或其他工具中使用的是 POST 请求方式。
  2. 请求头缺少必要信息:当使用 POST 请求时,确保请求头中包含正确的 Content-Type。通常使用 JSON 数据时,Content-Type 应该设置为 "application/json"。你可以在发送请求时手动设置请求头,或使用工具如 Postman 来发送带有正确请求头的 POST 请求。
  3. 跨域请求问题:如果你在前端页面中通过 JavaScript 发送请求到 Flask 后端,可能会遇到跨域请求的问题。在开发环境下,可以通过 Flask-CORS 扩展来解决跨域问题。你可以使用 pip install flask-cors 命令安装该扩展,并在代码中添加相应的配置。

以下是一个使用 Flask-CORS 扩展的例子:

from flask import Flask, jsonify, request
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

# 路由和处理函数代码...

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

通过引入 Flask-CORS 扩展并调用 CORS(app),你可以在 Flask 应用中启用跨域请求。

尝试根据上述解决方案检查和修改你的代码,以解决 "Method Not Allowed" 错误。如果问题仍然存在,请提供更多关于请求的详细信息,例如请求的方式、请求头和请求内容,以便更好地排查问题。

这是因为在访问/api/testpost接口时,使用了不支持的HTTP请求方法。默认情况下,Flask只支持GET和POST方法,如果需要使用其他HTTP请求方法,需要在路由装饰器中指定。例如,如果要支持PUT方法,可以这样写:

@app.route('/api/testpost', methods=['POST', 'PUT'])
def testPost():

处理请求逻辑

pass

在这个例子中,我们将路由装饰器中的methods参数设置为['POST', 'PUT'],表示该接口支持POST和PUT方法。这样,在访问该接口时,就可以使用POST或PUT方法了。

img


看这个方法只支持POST请求
1、如果直接在浏览器中访问是Get请求,所以会报错。
2、如果用第三方工具Post请求没有设置Content-Type = "application/json",也会报错。