我需要为烧瓶应用程序实现API,并看到了Flask-Restless
的建议。我跑了一堵墙,只有这个图书馆的基本用途,并希望使用它的人可以提供帮助。
创建API管理器和端点...
manager = APIManager(app, flask_sqlalchemy_db=db)
manager.create_api(Gallery, methods=['GET', 'POST', 'PUT', 'DELETE'])
...和与该模型相关的模型
class Gallery(db.Model):
__tablename__ = 'galleries'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(25))
def __init__(self, title):
self.title = title
现在,要插入新条目,我使用此jQuery ajax Post请求。这很好。我已经在SQLite DB查看器中进行了测试,并且可以看到条目。
$('#form').on('submit', function(e){
$.ajax({
type: 'post',
url: '/api/galleries',
contentType:"binary/octet-stream",
data: JSON.stringify({'title': $('#title').val()}),
success: function(){
alert('Success!');
}
});
e.preventDefault();
});
这是问题。我在浏览器中转到http://localhost:5000/api/galleries
并获取以下消息:
SQLALCHEMY.ORM.EXC.NORESULTFOUND
没有发现排
Noresultfound:一个()
当api/galleries
应返回DB条目列表时,它将尝试运行一个()。我尝试api/galleries/1
并获得完全相同的错误。我仔细检查,主要ID是1。我缺少什么?
我今天遇到了同样的问题,并用一些解决方法解决了。
这是我的模型的样子:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
...
class Key(db.Model):
user_id = db.Column(db.Integer, db.ForeignKey('auth_user.id'))
user = db.relationship('User', backref=db.backref('keys', lazy='dynamic'))
...
原因:
查询users
时,我收到相同的错误消息。而且我发现无烧瓶-Rest无需查询我的users
相关的keys
,不幸的是,我的key
表是空的,我收到了错误消息。
解决方案:
使用 include_columns 或 dubl_columns 在创建API时排除keys
列:
api_mgr.create_api(User, include_columns = ['email', 'username'])
或:
api_mgr.create_api(User, exclude_columns = ['keys', 'SOME_OTHER_COLUMNS'])
您可以查看是否有任何相关表引起了问题。如果是原因,您可以使用 include_columns 或 dubl_columns 关键字参数。