Skip to main content

extract swagger spec from source code and docstring for a flask app

Project description

# flask-swagger-plus
Extract swagger spec from source code (with `Form` and `Schema` components integrated).


A Simple Example
```python
from flask import Flask, jsonify
from flask.views import MethodView
from flask_swagger_plus import Form, SwaggerResponse, StringField, form, swagger
from marshmallow import Schema, fields

class ParamsForm(Form):
email = StringField()
name = StringField()

class AddressSchema(Schema):
street = fields.Str()
state = fields.Str()
country = fields.Str()

class UserAPI(MethodView):

@ParamsForm
@SwaggerResponse(AddressSchema)
def post(self):
"""
create a new user
---
"""
print(form.email)
print(form.name)
return {
'street': 'street',
'state': 'state',
'country': 'country'
}


app = Flask(__name__)

app.add_url_rule('/users/', view_func=UserAPI.as_view('show_users'))


@app.route('/swagger.json')
def spec():
return jsonify(swagger(app))

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

**docstring** with _---_ is required as we can thus know if you want to export an api to swagger spec.
It's also available if you prefer to using decorator style router registry.
```python
@app.route('/post_user')
@ParamsForm
@SwaggerResponse(AddressSchema)
def post_user():
"""
create user
---
"""
return {}
```

The json result from `/swagger.json` would like
```
{
"definitions": {
"__main__post:AddressSchema": {
"properties": {
"country": {
"type": "string"
},
"state": {
"type": "string"
},
"street": {
"type": "string"
}
}
}
},
"info": {
"title": "Cool product name",
"version": "0.0.0"
},
"paths": {
"/users/": {
"post": {
"description": "",
"parameters": [
{
"description": "",
"in": "formData",
"name": "email",
"type": "string"
},
{
"description": "",
"in": "formData",
"name": "name",
"type": "string"
}
],
"responses": {
"200": {
"description": "api result",
"schema": {
"$ref": "#/definitions/__main__post:AddressSchema"
}
}
},
"security": [],
"summary": "create a new user",
"tags": [
"__main__"
]
}
}
},
"swagger": "2.0"
}
```

Hope you enjoy it!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask-swagger-plus-0.0.2.tar.gz (8.5 kB view details)

Uploaded Source

File details

Details for the file flask-swagger-plus-0.0.2.tar.gz.

File metadata

File hashes

Hashes for flask-swagger-plus-0.0.2.tar.gz
Algorithm Hash digest
SHA256 efbbc0092011742fb1abbb4501f98babfe43b4e4180793cf0790ba0035e9744f
MD5 55f6d3afac03354456edffda7e5a0df3
BLAKE2b-256 ccda2cb3dfe4633c7c61efdcd86816b4428bec6ba869ccbc591ef95970def665

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page