Skip to content

Instantly share code, notes, and snippets.

@erik-sn
Created August 31, 2017 05:20
Show Gist options
  • Save erik-sn/7e9d50b4591418198f642364608b8f4e to your computer and use it in GitHub Desktop.
Save erik-sn/7e9d50b4591418198f642364608b8f4e to your computer and use it in GitHub Desktop.
from apistar import Include, Route, Response
from apistar.frameworks.wsgi import WSGIApp as App
from apistar.handlers import docs_urls, static_urls
from apistar import typesystem
class Name(typesystem.String):
description = "Person's name"
min_length = 3
max_length = 15
class Group(typesystem.Enum):
description = 'Group the person belongs to'
enum = ['anonymous', 'users', 'admins']
class Person(typesystem.Object):
description = 'Person object'
properties = {
'name': Name,
'age': typesystem.integer()
}
def welcome(name: Name, group: Group):
"""
Welcome the user
"""
if name is None:
return {'message': 'Welcome to API Star!'}
return {'message': 'Welcome to API Star, %s! You are a member of group %s' % (name, group)}
def create_person(person: Person):
return Response(person, 201)
routes = [
Route('/', 'GET', welcome),
Route('/person', 'POST', create_person),
Include('/docs', docs_urls),
Include('/static', static_urls)
]
app = App(routes=routes)
if __name__ == '__main__':
app.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment