tutorial restplus restful how example create python rest flask flask-restful

restplus - rest api python 3 example



matraz tranquilo: pasar parĂ¡metros a solicitud GET (3)

Quiero crear un recurso que admita la solicitud GET de la siguiente manera:

/bar?key1=val1&key2=val2

Probé este código, pero no funciona.

app = Flask(__name__) api = Api(app) class BarAPI(Resource): def get(key1, key2): return jsonify(dict(data=[key1, key2])) api.add_resource(BarAPI, ''/bar'', endpoint=''bar'')

¡Gracias!


Como reqparse está en desuso, aquí hay una solución que utiliza la biblioteca WebArgs :

from flask import Flask from flask_restful import Api, Resource, abort from webargs import fields, validate from webargs.flaskparser import use_kwargs, parser app = Flask(__name__) api = Api(app) class Foo(Resource): args = { ''bar'': fields.Str( required=True, validate=validate.OneOf([''baz'', ''qux'']), ), } @use_kwargs(args) def get(self, bar): return {''bar'': bar} api.add_resource(Foo, ''/foo'', endpoint=''foo'') # This error handler is necessary for usage with Flask-RESTful. @parser.error_handler def handle_request_parsing_error(err): abort(422, errors=err.messages) if __name__ == ''__main__'': app.run(debug=True)

Para obtener más ejemplos, eche un vistazo al ejemplo FTASK -REST en el repositorio de WebArgs.


Frasco puede analizar los argumentos a través de la solicitud

from flask import request

Puede usar las siguientes líneas en el bloque que requiere parámetros GET. GET se declara en la declaración @app.route() .

args = request.args print (args) # For debugging no1 = args[''key1''] no2 = args[''key2''] return jsonify(dict(data=[no1, no2])) # or whatever is required


Edición: ¡Esta ya no es la manera recomendada de hacer esto con un matraz tranquilo! El objeto reqparse está en desuso, consulte los docs para conocer la alternativa recomendada.

Utilice reqparse . Puedes ver otro ejemplo en la docs del matraz.

Realiza la validación de los parámetros y no requiere jsonify .

from flask import Flask from flask_restful import Resource, Api, reqparse app = Flask(__name__) api = Api(app) class BarAPI(Resource): def get(self): parser = reqparse.RequestParser() parser.add_argument(''key1'', type=str) parser.add_argument(''key2'', type=str) return parser.parse_args() api.add_resource(BarAPI, ''/bar'', endpoint=''bar'') if __name__ == ''__main__'': app.run(debug=True)