Как запросить API, настроенный с помощью Flask-restless

Я пытаюсь научиться обслуживать данные в приложении Flask и базе данных mysql, которые обслуживаются на pythonanywhere.

Я добавил маршрут к /test с функцией, которая предназначена для подключения к существующей таблице базы данных mysql, а затем использовать ее как API с create_api flask-restless.

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

но я получаю сообщение об ошибке страницы «Не найдено».


person elksie5000    schedule 14.05.2016    source источник


Ответы (2)


По первому вопросу:

причина ясна, ваша функция представления должна возвращать ответ, это может быть объект str, unicode, WSGI или кортеж.

По второму вопросу:

Если вы хотите узнать, что такое конечная точка в flask, вы можете увидеть этот вопрос: Что такое "конечная точка" в Flask? . И причина, по которой вы получаете ошибку NotFound, заключается в том, что вы не определили маршрут /test/api, у вас есть только маршрут /test.

person lord63. j    schedule 16.05.2016
comment
Просто хотел сказать спасибо. Я подправил код, и он в значительной степени работает. - person elksie5000; 17.05.2016

Кроме того, кажется очень странным настраивать ваше приложение и модели вашей базы данных и создавать API внутри представления.

person Glenn    schedule 16.05.2016
comment
К сожалению, я все еще пытаюсь разобраться с Python в Интернете и базах данных. В результате я собираю много кода из разных источников, вместо того, чтобы как следует все обдумать. - person elksie5000; 17.05.2016