2017-04-02 4 views
1
from flask import g, request, session, render_template, flash, redirect, url_for 
from flask import current_app as app 

@app.route('/') 
def home(): 
    return 'this works' 


from flask_restful import Resource, Api 
from app.extensions import api 


class HelloWorld(Resource): 
    def get(self): 
     return {'Hello': 'World'} 

api.add_resource(HelloWorld, '/test') # Getting a 404 for this route on http://127.0.0.1:5000/test 

Extensions richtet die api Variable Zugriff:404, wenn Ressource Flask-Restful

api = Api() 
api.init_app(app) 

ich nicht herausfinden können, warum ich eine 404 erhalten, wenn eine api Ressource zuzugreifen versucht?

+1

haben Sie es mit einem Parameter versucht? – pvg

+0

Alternativ wurde Ihr Beispiel ohne Parameter ausgeführt (entspricht Ihrer add_resource) und es scheint zu funktionieren wie erwartet. https://pastebin.com/yJy7F2At – pvg

+0

Entschuldigung, ich ersetzte meinen komplizierteren Code durch einige aus der Dokumentation und vergaß den Parameter. Ich habe meinen Code aktualisiert, aber das Problem besteht immer noch für mich. – ovg

Antwort

2

Ok, das Problem scheint zu sein, dass die Reihenfolge unten falsch ist. Ich muss Ressourcen hinzufügen, bevor ich die API einleite.

api = Api() 
api.init_app(app) 
api.add_resource(HelloWorld, '/') 

Fix:

api = Api() 
api.add_resource(HelloWorld, '/') 
api.init_app(app) 

Dieses ziemlich merkwürdig ist gegeben, dass z.B. SQLAlchemy muss init_app aufrufen, bevor es verwendet wird ...

+0

Sie hätten so etwas wie 'app = Flask (__ name__) api = API (app) api.add_resource (HelloWorld,'/test ') '(wie in der Dokumentation) machen können. – Pradeepb

+0

In meinem Code sind sie nicht direkt nebeneinander, da ich eine Anwendung Fabrik verwende – ovg

+1

Auch mit einer App-Fabrik und war dabei, meinen Laptop zu bestrafen, bis ich diese Antwort gefunden habe. Vielen Dank!! – Ominus

Verwandte Themen