McLaren-W 2023-06-08 12:31 采纳率: 83.3%
浏览 19
已结题

关于#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

  • 写回答

3条回答 默认 最新

  • juer_0001 2023-06-08 13:37
    关注

    参考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" 错误。如果问题仍然存在,请提供更多关于请求的详细信息,例如请求的方式、请求头和请求内容,以便更好地排查问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月9日
  • 已采纳回答 7月1日
  • 创建了问题 6月8日