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.3.tar.gz (8.4 kB view details)

Uploaded Source

File details

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

File metadata

File hashes

Hashes for flask-swagger-plus-0.0.3.tar.gz
Algorithm Hash digest
SHA256 92737d543dd8b481964ba3871493f1c7cf8ca126bb3e1fcd99aa302fd09f809d
MD5 8dd4da75d45a3b96e4054a163ffc988b
BLAKE2b-256 742943f85d3181680dc13fedba842a7e01d662b5e6cfd0d686d71bdd92af4bce

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