📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials Flask Web Framework Flask-RESTful / Flask-RESTX

Flask-RESTful / Flask-RESTX

6 min read
Build self-documenting APIs with Flask-RESTX Swagger UI, response marshalling, and namespaces.

Flask-RESTX (Swagger Auto-docs)

pip install flask-restx

from flask_restx import Api, Resource, fields

api = Api(app, doc="/docs")   # Swagger UI at /docs

user_model = api.model("User", {
    "id":    fields.Integer(readonly=True),
    "name":  fields.String(required=True),
    "email": fields.String(required=True),
})

@api.route("/users")
class UserList(Resource):
    @api.marshal_list_with(user_model)
    def get(self):
        return User.query.all()

    @api.expect(user_model)
    @api.marshal_with(user_model, code=201)
    def post(self):
        data = api.payload
        user = User(**data)
        db.session.add(user)
        db.session.commit()
        return user, 201

@api.route("/users/<int:id>")
class UserResource(Resource):
    @api.marshal_with(user_model)
    def get(self, id):
        return db.get_or_404(User, id)

    def delete(self, id):
        user = db.get_or_404(User, id)
        db.session.delete(user)
        db.session.commit()
        return "", 204