Hier ist eine einfache Flask-Restful Ressource:Wie kann ich mit Flask-Restful auf eine Ressource mit mehreren Endpunkten zugreifen?
class ListStuff(Resource):
def get(self):
stuff = SomeFunctionToFetchStuff()
if re.match('/api/', request.path):
return {'stuff': stuff}
return make_response("{}".format(stuff), 200, {'Content-Type': 'text/html'})
api.add_resource(ListStuff, '/list', '/api/list', endpoint='list')
Meine Idee ist es, Benutzern zu erlauben, sowohl /list
und /api/list
zu nennen. Wenn sie die erste URL verwenden, erhalten sie eine HTML-Darstellung der Daten zurück. Wenn sie die zweite URL verwenden, erhalten sie eine JSON-Repräsentation.
Mein Problem ist, wenn ich auf die URL dieses Endpunkts an anderer Stelle im Programm zugreifen möchte. Ich kann einfach nicht url_for('list')
verwenden, denn das ist immer /list
zurückkehren wird, unabhängig davon, ob der Benutzer Zugriff auf http://host.example.com/list
oder http://host.example.com/api/list
So wie kann ich die URL für /api/list
bauen?
Sie haben eine andere Ressource hinzufügen für '/ api/list' –
zB api.add_resource (ListStuff, '/ list') & api.add_resource (ListStuff, '/ api/list') –
Hassan, Dank für die Idee, aber tut das nicht das Gleiche wie das, was ich schon mit 'api.add_resource (ListStuff, '/ list', '/ api/list', endpoint = 'list')' 'habe? In jedem Fall würde ich die URL für '/ api/list' erstellen? –