Skip to content

Instantly share code, notes, and snippets.

@mosi-kha
Last active July 11, 2021 07:05
Show Gist options
  • Save mosi-kha/ece17390551444bf1d6bcd25de5f91d6 to your computer and use it in GitHub Desktop.
Save mosi-kha/ece17390551444bf1d6bcd25de5f91d6 to your computer and use it in GitHub Desktop.
versioning API in falcon framework v2

1

first in your route, use this base url : /api/{version}

2

then create this file: decorator.py

import falcon

class UriVersion:
    def __init__(self, version: list):
        self.version = version

    def __call__(self, req: falcon.Request, resp: falcon.Response, *args, **kwargs):
        try:
            version = args[1].get('version')
            if version not in self.version:
                raise NotImplementedVersionURI # raise your exception
        except NotImplementedVersionURI:
            raise falcon.HTTPNotImplemented(self._('The URI version is not valid!'))

3

and now create resource like this :

import falcon
from .decorator import UriVersion  # import decorator

__version__ = ['v1']


@falcon.before(UriVersion(__version__))
class UserResource(BaseResource):

    def on_put(self, req: falcon.Request, resp: falcon.Response, *args, **kwargs):
    	pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment