Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 访问烧瓶中的积垢端点时出现问题_Python_Python 3.x_Rest_Flask_Flask Restful - Fatal编程技术网

Python 访问烧瓶中的积垢端点时出现问题

Python 访问烧瓶中的积垢端点时出现问题,python,python-3.x,rest,flask,flask-restful,Python,Python 3.x,Rest,Flask,Flask Restful,我创建了一个CRUD端点,但当我尝试获取数据时,收到一个404错误。我尝试使用和访问此端点,但仍然得到404。因为我提供了“beck”作为艺术家的名字,所以我认为get方法可以正常运行。我想我添加的资源不正确 class Artistdetails(Resource): def get(self, artist_name): conn = db_connect.connect() # Protect against SQL injection

我创建了一个CRUD端点,但当我尝试获取数据时,收到一个404错误。我尝试使用和访问此端点,但仍然得到404。因为我提供了“beck”作为艺术家的名字,所以我认为get方法可以正常运行。我想我添加的资源不正确

class Artistdetails(Resource):
    def get(self, artist_name):
        conn = db_connect.connect()
        # Protect against SQL injection
        restricted_char = "!=<>*0&|/\\"
        for char in restricted_char:
            artist_name = artist_name.replace(char, "")
        query_db = conn.execute("SELECT DISTINCT album FROM album WHERE artist='{0}'".format(artist_name.title()))
        result = jsonify({'artistAlbumList': [i[0] for i in query_db.cursor.fetchall()]})
        return result

    def put(self, artist_name, album_name, album_name_new):
        conn = db_connect.connect()
        # Protect against SQL injection
        restricted_char = "!=<>*0&|/\\"
        for char in restricted_char:
            artist_name = artist_name.replace(char, "")
        query_db = conn.execute("UPDATE album SET album='{0}' WHERE artist='{1}' AND"
                                " album='{2}'".format(artist_name.title(), album_name.title(), album_name_new.title()))
        result = jsonify({'putAlbumId': [i[0] for i in query_db.cursor.fetchall()]})
        return result, 201

    def post(self, artist_name, album_name):
        conn = db_connect.connect()
        # Protect against SQL injection
        restricted_char = "!=<>*0&|/\\"
        for char in restricted_char:
            artist_name = artist_name.replace(char, "")
        query_db = conn.execute("INSERT INTO album (album, artist) VALUES"
                                " ({0},{1})".format(artist_name.title(), album_name.title()))
        result = jsonify({'postAlbumId': [i[0] for i in query_db.cursor.fetchall()]})
        return result, 201

    def delete(self, artist_name, album_name):
        conn = db_connect.connect()
        # Protect against SQL injection
        restricted_char = "!=<>*0&|/\\"
        for char in restricted_char:
            artist_id = artist_name.replace(char, "")
            album_id = album_name.replace(char, "")
        query_db = conn.execute("DELETE FROM album WHERE"
                                " artist_id='{0}' AND album_id='{1}'".format(artist_name, album_name)
                                )
        result = jsonify({'deleteAlbumId': [i[0] for i in query_db.cursor.fetchall()]})
        return result, 204
创建API路由 这一行:

api.add_resource(Artistdetails,
    '/albums/<string:artist_name>/<string:album_name>/<string:album_name_new>')

它向Flask路由器添加了一条路径,使其预期/albums/会有用。

@Birryrree是否可以为get、post、put和delete添加不同数量的参数?或者这就是reqparse的用武之地?@PanczerTank对于get等请求的不同数量的参数,您可以使用reqparse,尽管它已被弃用,但您仍然可以使用它或类似棉花糖的东西。对于其他方面,您可以创建新端点并将它们绑定到同一个类。Flask RESTful看起来应该只将一个端点绑定到一个类,但事实并非如此。您可以根据需要将同一类附加到多个资源。
api.add_resource(Artistdetails,
    '/albums/<string:artist_name>/<string:album_name>/<string:album_name_new>')
api.add_resource(Artistdetails, '/albums/<string:artist_name>')
/albums?artist=<string>&album_name=<string>