Skip to content
Snippets Groups Projects
Verified Commit 6ec1a2ad authored by David Beniamine's avatar David Beniamine
Browse files

Merge branch 'swagger' of gitlab.tetras-libre.fr:iiif/backend

parents e96b0c41 b3e28505
No related branches found
No related tags found
1 merge request!2Draft:Generic api v1
...@@ -4,3 +4,4 @@ venv ...@@ -4,3 +4,4 @@ venv
**/__pycache__ **/__pycache__
.env .env
*.sw? *.sw?
/.idea/
from flask import Flask from flask import Flask
from flask_restful import Api from flask_restful import Api
from Mirador_backend.resources.mirador_resource import MiradorResource from Mirador_backend.resources.mirador_resource import MiradorResource
from flask_restful_swagger import swagger
from apispec import APISpec
from apispec.ext.marshmallow import MarshmallowPlugin
from flask_apispec.extension import FlaskApiSpec
app = Flask(__name__) app = Flask(__name__)
api = Api(app) api = Api(app)
docs = FlaskApiSpec(app)
api.add_resource(MiradorResource, '/mirador_resource', '/mirador_resource/<int:id>') api.add_resource(MiradorResource, '/mirador_resource', '/mirador_resource/<int:id>')
docs.register(MiradorResource)
app.config.update({
'APISPEC_SPEC': APISpec(
title='Mirador Backend',
version='v1',
plugins=[MarshmallowPlugin()],
openapi_version='2.0.0'
),
'APISPEC_SWAGGER_URL': '/swagger/', # URI to access API Doc JSON
'APISPEC_SWAGGER_UI_URL': '/swagger-ui/' # URI to access UI of API Doc
})
if __name__ == '__main__': if __name__ == '__main__':
app.run(debug=True) app.run(debug=True)
from flask_restful import Resource from flask_restful import Resource
from flask_restful_swagger import swagger
from apispec import APISpec
from marshmallow import Schema, fields
from apispec.ext.marshmallow import MarshmallowPlugin
from flask_apispec.extension import FlaskApiSpec
from flask_apispec.views import MethodResource
from flask_apispec import marshal_with, doc, use_kwargs
class MiradorResource(Resource): class MRResponseSchema(Schema):
message = fields.Str(default='Success')
class MRRequestSchema(Schema):
class Meta:
fields = ('name', 'description') # TODO just an example
class MiradorResource(MethodResource,Resource):
@doc(description='Mirador resource i e, manifest and collection of IIIF resource', tags=['Mirador resource'])
@marshal_with(MRResponseSchema) # marshalling
def get(self, id=None): def get(self, id=None):
return {'method': 'get', 'id': id} return {'method': 'get', 'id': id}
@doc(description='Create Mirador resource i e, manifest and collection of IIIF resource', tags=['Mirador resource'])
@use_kwargs(MRRequestSchema, location=('json'))
def post(self): def post(self):
return {'method': 'post'} return {'method': 'post'}
......
...@@ -30,7 +30,7 @@ setup( ...@@ -30,7 +30,7 @@ setup(
packages=find_packages(), packages=find_packages(),
install_requires=["flask", "flask-restful", "python-dotenv"], install_requires=["flask", "flask-restful", "python-dotenv", "flask-restful-swagger", "flask-apispec"],
setup_requires=[""], setup_requires=[""],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment