2017-10-31 8 views
1

私は既存のmysqlデータベースを持っており、アクセスするためのAPIを作成しようとしていますが、404エラーが表示されます。私は動作しないコードの2つのバージョンがあります。フラスコレスレスを使用して404エラーが発生する

誰かが正しい方向に向いていますか?私が使用している

URL:http://127.0.0.1:5000/api/email

V1:

from flask import Flask 
from flask.ext.restless import APIManager 
from flask_sqlalchemy import SQLAlchemy 

app = Flask(__name__) 
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://pathtodb/emails' 
db = SQLAlchemy(app) 

class Email(db.Model): 
    __tablename__ = 'emails' 
    id = db.Column(db.Integer, primary_key=True) 
    status = db.Column(db.String(20)) 
    email = db.Column(db.String()) 

    def __init__(self, status, email): 
     self.status = status 
     self.email = email 

api_manager = APIManager(app, flask_sqlalchemy_db=db) 
api_manager.create_api(Email, methods=['GET', 'POST', 'DELETE', 'PUT']) 

if __name__ == "__main__": 
    app.run(debug=True) 

V2:

from flask import Flask 
from flask.ext.restless import APIManager 
from sqlalchemy import * 
from sqlalchemy.ext.declarative import declarative_base 

app = Flask(__name__) 
Base = declarative_base() 
engine = create_engine('mysql+pymysql://pathtodb/emails', echo=True) 
metadata = MetaData(bind=engine) 

class Email(Base): 
    __tablename__ = Table('emails', metadata, autoload=True) 
    id = Column(Integer, primary_key=True) 
    status = Column(String(20)) 
    email = Column(String()) 


api_manager = APIManager(app, flask_sqlalchemy_db=engine) 
api_manager.create_api(Email, methods=['GET', 'POST', 'DELETE', 'PUT']) 

if __name__ == "__main__": 
    app.run(debug=True) 

URL私が使用している:リンクが生成されflask-restlesshttp://127.0.0.1:5000/api/email

+0

あなたはapiにアクセスするためにどのURLを使用していますか? – PRMoureu

+0

@PRMoureu - http://127.0.0.1:5000/api/email – SO03112

+1

http://127.0.0.1:5000/api/emailsで試してみてください、tablenameは複数です – PRMoureu

答えて

2

メソッドapi_manager.create_api()がcalleの場合は自動的にこの形式のD:{tablename}は、モデルクラス、しない方法で呼び出されたクラス名に与え__tablename__ある

'http://127.0.0.1:5000/api/{tablename}' # default domain and port 

文書には、hereの例が記載されています。

+1

btw、使用しているバージョンについてはわかりませんが、廃止予定の警告を避けるために 'flask_restless import APIManager' – PRMoureu

関連する問題