Building Python APIs with Flask, Flask-RESTPlus and Swagger UI¶
Medium Article Link: https://medium.com/p/7461b3a9a2c8¶
Minimal API¶
from flask import Flask
from flask_restplus import Api, Resource
app = Flask(__name__)
api = Api(app)
@api.route('/hello/')
class HelloWorld(Resource):
def get(self):
return "Hello World"
if __name__ == '__main__':
app.run()
Fetching Request Parameters¶
from flask import Flask
from flask_restplus import Api, Resource, reqparse
app = Flask(__name__)
api = Api(app)
parser = reqparse.RequestParser()
parser.add_argument('name', help='Specify your name')
@api.route('/hello/')
class HelloWorld(Resource):
@api.doc(parser=parser)
def get(self):
args = parser.parse_args()
name = args['name']
return "Hello " + name
if __name__ == '__main__':
app.run()
File Upload¶
from flask import Flask
from flask_restplus import Api, Resource
from werkzeug.datastructures import FileStorage
app = Flask(__name__)
api = Api(app)
upload_parser = api.parser()
upload_parser.add_argument('file',
location='files',
type=FileStorage)
@api.route('/upload/')
@api.expect(upload_parser)
class UploadDemo(Resource):
def post(self):
args = upload_parser.parse_args()
file = args.get('file')
print(file.filename)
return "Uploaded file is " + file.filename
if __name__ == '__main__':
app.run()
If you get the following error while deploying:
from werkzeug import cached_property
ImportError: cannot import name 'cached_property'
Add this line before from werkzeug.datastructures import FileStorage
:
import werkzeug
werkzeug.cached_property = werkzeug.utils.cached_property
API Parameters¶
api = Api(app,
version='10.5',
title='Flask Restplus Demo',
description='Demo to show various API parameters',
license='MIT',
contact='Jimit Dholakia',
contact_url='https://in.linkedin.com/in/jimit105',
doc = '/docs/',
prefix='/test'
)