API versioning
Back in Chapter 2, Organizing a Project, we discussed how you could implement API versioning using blueprints. If you recall, it was simply a matter of adding a keyword value to the blueprint definition.
Given the following blueprint definition, we get the URL path /v1/characters
:
bp = Blueprint("characters", version=1, url_prefix="/characters") @bp.get("") async def get_all_characters(...): ...
That version
keyword argument is available at the route level as well. If the version is defined in multiple places (for example, on the route and also the blueprint), priority is given to the narrowest scope. Let's look at an example of different places where the version can be defined, and see what the result is. We will define it at the route level, the blueprint level, and the blueprint group level:
bp = Blueprint("Characters") bp_v2 = Blueprint("CharactersV2", version=2) group = Blueprint...