Chalice plugin for the apispec library
Project description
Chalice plugin for the apispec (fka Swagger) generation library.
Installation
From PyPi:
$ pip install apispec-chalice
Example RESTful Application
from apispec import APISpec
from chalice import Chalice
from marshmallow import Schema, fields
import apispec_chalice
# Create an APISpec
spec = APISpec(
title='Swagger Petstore',
version='1.0.0',
plugins=[
'apispec_chalice',
'apispec.ext.marshmallow',
],
)
# Optional marshmallow support
class CategorySchema(Schema):
id = fields.Int()
name = fields.Str(required=True)
class PetSchema(Schema):
category = fields.Nested(CategorySchema, many=True)
name = fields.Str()
class ErrorSchema(Schema):
status_code = fields.Int(required=True)
message = fields.Str()
app = Chalice(__name__)
@app.route('/pets', methods=['GET', 'POST'])
def pets(gist_id):
'''
---
get:
responses:
200:
schema:
type: array
items: PetSchema
404:
schema: ErrorSchema
post:
responses:
201:
headers:
Location:
description: 'URI of new pet'
type: string
400:
schema: ErrorSchema
'''
pass
@app.route('/pets/{pet_name}', methods=['GET', 'PUT', 'DELETE'])
def pet(gist_id):
'''
---
get:
responses:
200:
schema: PetSchema
404:
schema: ErrorSchema
delete:
responses:
204:
description: 'deleted pet'
404:
schema: ErrorSchema
put:
responses:
204:
description: 'deleted pet'
400:
schema: ErrorSchema
'''
pass
# Register entities and paths
spec.definition('Category', schema=CategorySchema)
spec.definition('Pet', schema=PetSchema)
spec.definition('Error', schema=ErrorSchema)
spec.add_path(app=app, view=pets)
spec.add_path(app=app, view=pet)
Generated OpenAPI Spec
spec.to_dict()
#{
# 'info':{
# 'title':'Swagger Petstore',
# 'version':'1.0.0'
# },
# 'paths':{
# '/pets':{
# 'get':{
# 'responses':{
# '200':{
# 'schema':{
# 'type':'array',
# 'items':{
# '$ref':'#/definitions/Pet'
# }
# }
# },
# '404':{
# 'schema':{
# '$ref':'#/definitions/Error'
# }
# }
# }
# },
# 'post':{
# 'responses':{
# '201':{
# 'headers':{
# 'Location':{
# 'description':'URI of new pet',
# 'type':'string'
# }
# }
# },
# '400':{
# 'schema':{
# '$ref':'#/definitions/Error'
# }
# }
# }
# }
# },
# '/pets/{pet_name}':{
# 'get':{
# 'responses':{
# '200':{
# 'schema':{
# '$ref':'#/definitions/Pet'
# }
# },
# '404':{
# 'schema':{
# '$ref':'#/definitions/Error'
# }
# }
# }
# },
# 'delete':{
# 'responses':{
# '204':{
# 'description':'deleted pet'
# },
# '404':{
# 'schema':{
# '$ref':'#/definitions/Error'
# }
# }
# }
# },
# 'put':{
# 'responses':{
# '204':{
# 'description':'deleted pet'
# },
# '400':{
# 'schema':{
# '$ref':'#/definitions/Error'
# }
# }
# }
# }
# }
# },
# 'tags':[
#
# ],
# 'swagger':'2.0',
# 'definitions':{
# 'Category':{
# 'type':'object',
# 'properties':{
# 'name':{
# 'type':'string'
# },
# 'id':{
# 'type':'integer',
# 'format':'int32'
# }
# },
# 'required':[
# 'name'
# ]
# },
# 'Pet':{
# 'type':'object',
# 'properties':{
# 'name':{
# 'type':'string'
# },
# 'category':{
# 'type':'array',
# 'items':{
# '$ref':'#/definitions/Category'
# }
# }
# }
# },
# 'Error':{
# 'type':'object',
# 'properties':{
# 'message':{
# 'type':'string'
# },
# 'status_code':{
# 'type':'integer',
# 'format':'int32'
# }
# },
# 'required':[
# 'status_code'
# ]
# }
# },
# 'parameters':{
#
# }
#}
License
MIT licensed. See the bundled LICENSE file for more details.
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
apispec-chalice-0.2.2.tar.gz
(3.8 kB
view details)
File details
Details for the file apispec-chalice-0.2.2.tar.gz
.
File metadata
- Download URL: apispec-chalice-0.2.2.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68984d90cfeacec85cb64c1beae6a48175c67603d9b4ffae148013f1bba802cb |
|
MD5 | 4f8916b19c5377bb996995dad68a8738 |
|
BLAKE2b-256 | b83a02950de570c74145e824aa574944350a0b8eb277d46f43d2d4511094943b |