在 MongoDB 上发出 POST 请求后未找到 Flask 404

时间:2021-01-16 16:53:01

标签: python mongodb flask

我有一个 MongoDB 社区在我的 MacOS 上运行。 我想连接并将数据从它发送到 Flask 服务器(我不知道 Flask 服务器的名称是否正确,对此我很抱歉),以便我可以获取并向其添加数据。

数据库名称是:“USERS”,而它的集合是“user”。 (这是我第一次这样做)。

这是我的代码:

from flask import Flask, make_response
from flask_mongoengine import MongoEngine


app=Flask(__name__)

database_name="USERS"
DB_URI ="mongodb://localhost:27017/?readPreference=primary&appname=MongoDB%20Compass&ssl=false"
app.config["MONGODB_HOST"]=DB_URI

db=MongoEngine()
db.init_app(app)

class User(db.Document):
    user_id= db.IntField()
    user_name=db.StringField()
    user_bio=db.StringField()

    def to_json(self):
        #convert this document to JSON
        return {
            "user_id" : self.user_id,
            "user_name" : self.user_name,
            "user_bio" : self.user_bio
        }

@app.route("http://127.0.0.1:5000/USERS/db_populate",methods=['POST'])
def db_populate():
    user1=User(user_id=1,user_name="Marco", user_bio="Hi!")
    user2=User(user_id=2,user_name="Francesca", user_bio="What a weird program!")
    user1.save()
    user2.save()
    return make_response("",201)

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

我确定 DB_URI 是正确的。 通用用户必须具有:id、name 和 bio。

运行此命令后:http POST http://127.0.0.1:5000/USERS/db_populate 我有以下输出:

mac.fede@Ahoga ~ % http POST http://127.0.0.1:5000/USERS/db_populate
HTTP/1.0 404 NOT FOUND
Content-Length: 86
Content-Type: application/json
Date: Sat, 16 Jan 2021 16:40:12 GMT
Server: Werkzeug/1.0.1 Python/3.9.1

{
    "message": "Not foundhttp://127.0.0.1:5000/USERS/db_populate",
    "status": 404
}

我正在努力寻找正确的路径,因为我确定有些路径是不正确的,您觉得如何?

编辑:解决了,我运行了错误的服务器。

2 个答案:

答案 0 :(得分:0)

你尝试了吗:

@app.route("/USERS/db_populate",methods=['POST']) ?

答案 1 :(得分:0)

您应该始终只使用 app.route() 的路径。

因此改变

@app.route("http://127.0.0.1:5000/USERS/db_populate",methods=['POST'])

@app.route("/USERS/db_populate",methods=['POST'])

还要遵循路径名的一般命名约定,只应使用小写字母,所以

@app.route("/users/db_populate",methods=['POST'])

会更好。可以使用大写字母,但当人们尝试使用小写字母引用您的端点时,可能会导致混淆和错误。