1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
"""
Example using Marshmallow Schema and fields as definitions
"""
# coding: utf-8
from flask import Flask, jsonify, Response, request
from flasgger import Swagger, SwaggerView
swagger_config = {
"headers": [],
"openapi": "3.0.2",
"components": {
'schemas': {
'Species': {
'type': 'object',
'properties': {
'id': {
'type': 'integer',
'format': 'int64'
},
'name': {
'type': 'string'
}
}
},
'Animal': {
'type': 'object',
'properties': {
'species': {
'$ref': '#/components/schemas/Species'
},
'name': {
'type': 'string'
}
}
}
}
},
"title": "Animal Shelter API",
"version": '',
"termsOfService": "",
"static_url_path": "/characteristics/static",
"swagger_ui": True,
"description": "",
}
class Animals(SwaggerView):
def get(self):
"""
find shelter animals that fit the criteria
---
tags:
- Animals
description: Parameters can be provided in the query to search
operationId: getAnimals
parameters:
- name: species
in: query
required: true
schema:
type: string
- name: status
in: query
required: true
schema:
type: string
enum:
- adopted
- pending
- adoptable
- transferred
- sanctuary
- medical-hold
responses:
'200':
description: Animals to be returned
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Animal'
"""
species = request.args.get('name')
status = request.args.get('status')
return Response(status=200)
app = Flask(__name__)
swag = Swagger(app, config=swagger_config, merge=True)
app.add_url_rule(
'/animals',
view_func=Animals.as_view('animals'),
methods=['GET']
)
if __name__ == "__main__":
app.run(debug=True)
|