Python 访问烧瓶中的积垢端点时出现问题
我创建了一个CRUD端点,但当我尝试获取数据时,收到一个404错误。我尝试使用和访问此端点,但仍然得到404。因为我提供了“beck”作为艺术家的名字,所以我认为get方法可以正常运行。我想我添加的资源不正确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
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>