如何查询使用 Flask-restless 设置的 API

Posted

技术标签:

【中文标题】如何查询使用 Flask-restless 设置的 API【英文标题】:How to query API set up with Flask-restless 【发布时间】:2016-09-10 16:24:43 【问题描述】:

我正在尝试学习如何在 Flask 应用程序和 mysql 数据库中提供数据,两者都在 pythonanywhere 上提供。

我添加了一条到 /test 的路由,该路由旨在连接到现有的 mysql 数据库表,然后使用 flask-restless 的 create_api 将其作为 API 提供。

from flask.ext.sqlalchemy import SQLAlchemy
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from flask.ext.cors import CORS


app.config["SQLALCHEMY_DATABASE_URI"] = SomeLoginDetails
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299

db = SQLAlchemy(app)

@app.route("/test")
def create_api():
    app.config['CORS_ALLOW_HEADERS'] = "Content-Type"
    app.config['CORS_RESOURCES'] = r"/api/*": "origins": "*"
cors = CORS()
    engine = create_engine(SomeLoginDetails)
    Base = declarative_base()
    Base.metadata.bind = engine
    class Prices(Base):
        __tablename__ = 'table'
        col1 = Column(Integer, primary_key=True)
        col2 = Column(Float)
        col3 = Column(Float)
        col4 = Column(Float)
    Base.metadata.create_all()
    manager = flask.ext.restless.APIManager(app,
                                    flask_sqlalchemy_db = db)
    manager.create_api(Prices, methods=['GET'], max_results_per_page =1000)
    return "OK"

如果我离开最后一个 Return "OK",我会收到如下错误:

File "/home/username/.local/lib/python2.7/site-packages/flask/app.py", line 1566, in make_response
    raise ValueError('View function did not return a response')
ValueError: View function did not return a response

但是,如果我添加它,我不会收到任何错误。

这是为什么呢?

终点在哪里?我试过了

http://xxx-sitename-xxx.pythonanywhere.com/test/api

但我收到“未找到”页面错误。

【问题讨论】:

【参考方案1】:

另外,设置应用程序和数据库模型并在视图内部创建 API 似乎真的很奇怪。

【讨论】:

不幸的是,我仍在尝试了解网络和数据库中的 python。结果,我拼凑了大量来自不同来源的代码,而不是正确地思考问题。【参考方案2】:

对于第一个问题:

原因很清楚,你的视图函数应该返回一个响应,它可以是一个 str、unicode、WSGI 对象或一个元组。

第二个问题:

如果想知道flask中的endpoint是什么,可以看这个问题:What is an 'endpoint' in Flask?。你得到NotFound 错误的原因是你没有定义/test/api 路由,你只有/test 路由。

【讨论】:

只是想说声谢谢。我调整了代码,它几乎可以正常工作。

以上是关于如何查询使用 Flask-restless 设置的 API的主要内容,如果未能解决你的问题,请参考以下文章

如何对 JSONB 内容运行 Flask-restless api 过滤器查询

如何使用 Flask-Restless 按日期搜索模型

使用请求时如何为 Flask-Restless 构建复杂的过滤器?

Flask-Restless 无法构造查询

Flask-Restless 过滤器不过滤结果

如何使用 Flask-Restless 启用 CORS