无法通过Flask-RESTful实现PUT请求

如何解决无法通过Flask-RESTful实现PUT请求

我正在尝试使用Flask-RESTful实现REST API。我的API包含4个请求:GET,POST,PUT,DELETE。除PUT请求外,其他所有功能均正常运行。它会继续返回状态代码404,但找不到请求的URL。我正在使用Postman测试我的API。这是我的代码。可以告诉我我在哪里做错了吗?谢谢!

# Small API project using Flask-RESTful
from flask import Flask,request
from flask_restful import Resource,Api,reqparse
from flask_jwt import JWT,jwt_required

app = Flask(__name__)
# Encrypted key
app.secret_key = "Nam Dao"
api = Api(app)

students = []

class Student(Resource):
    parser = reqparse.RequestParser()
    parser.add_argument("major",type=str,required=True,help="This field cannot be left blank")

    def get(self,name):
        # filter function will return a filter object
        # next function will get the "next" student in the filter object.
        # if the Next function does not return anything => return None.
        for student in students:
            if student["name"] == name:
                return student,200
        return {"message": "student not found"},404

    def post(self,name):
        if next(filter(lambda x: x["name"] == name,students),None) is not None:
            return {"message": f"A student with the name {name} already exists"},400

        request_data = self.parser.parse_args()

        print(request_data)
        student = {"name": name,"major": request_data["major"]}
        students.append(student)
        return student,201

    def delete(self,name):
        for student in students:
            if student["name"] == name:
                students.remove(student)
                return {"message": "Item deleted"},200
        return {"message": "No student found"},204

    def put(self,name):
        data = request.get_json()
        for student in students:
            if student["name"] == name:
                student["major"] = data["major"]
                return {"message": "Student Major Changed"},200
        student = {"name": data["name"],"major": data["major"]}
        students.append(student)
        return {"message": "Student Added"},200

api.add_resource(Student,"/student/<string:name>")

class StudentsList(Resource):
    def get(self):
        return {"students": students},200

api.add_resource(StudentsList,"/students")

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

解决方法

我再次重新检查我的URL,但是我遗漏了字母,这就是为什么它返回404状态代码的原因。这是一个非常愚蠢的错误。一切都很好

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?