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

时间:2016-05-14 13:54:16

标签: flask flask-sqlalchemy pythonanywhere flask-restless

我正在尝试学习如何在pythonanywhere上提供的Flask app和mysql数据库中提供数据。

我添加了一个到/ 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"

如果我离开最后一次返回“确定”,我会收到错误:

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

但是我收到了Not Found页面错误。

2 个答案:

答案 0 :(得分:3)

此外,设置您的应用和数据库模型以及在视图中创建API 似乎很奇怪。

答案 1 :(得分:2)

对于第一个问题:

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

关于第二个问题:

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