From bc2091b1ca0e63fe47c01afab0badf1e30ac3913 Mon Sep 17 00:00:00 2001 From: pduggi-cf <76139304+pduggi-cf@users.noreply.github.com> Date: Sat, 19 Jun 2021 08:44:13 +0530 Subject: [PATCH 1/2] Update README.md --- README.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/README.md b/README.md index 3baef9e..d27864c 100644 --- a/README.md +++ b/README.md @@ -148,3 +148,63 @@ app = VersionedFastAPI(app, ] ) ``` + + +## Custom Middleware and Decorators + +All custom Middleware and Decorators should be decalared after creating a Versioned Fast API object + +```python +from fastapi import FastAPI, Request +from fastapi_versioning import VersionedFastAPI, version +from starlette.middleware import Middleware +from starlette.middleware.sessions import SessionMiddleware + +app = FastAPI( + title='My App', + description='Greet uses with a nice message', + middleware=[ + Middleware(SessionMiddleware, secret_key='mysecretkey') + ] +) + +@app.get('/greet') +@version(1) +def greet(request: Request): + request.session['last_version_used'] = 1 + return 'Hello' + +@app.get('/greet') +@version(2) +def greet(request: Request): + request.session['last_version_used'] = 2 + return 'Hi' + +@app.get('/version') +def last_version(request: Request): + return f'Your last greeting was sent from version {request.session["last_version_used"]}' + +app = VersionedFastAPI(app, + version_format='{major}', + prefix_format='/v{major}', + description='Greet users with a nice message', + middleware=[ + Middleware(SessionMiddleware, secret_key='mysecretkey') + ] +) + +#Startup event +@app.on_event("startup") +async def startup_db_client(): + from firebase import initialize_app + app.firebase_app = initialize_app() + +#Custom Middlware +@app.middleware("http") +async def get_headers(request: Request, call_next): + from time import process_time + start = process_time() + response: Response = await call_next(request) + response.headers["X-Process-Time"] = str(process_time() - start) + return response +``` From 6a239da7a725207617c4e7ac88178f0c09f4b6a4 Mon Sep 17 00:00:00 2001 From: pduggi-cf <76139304+pduggi-cf@users.noreply.github.com> Date: Sat, 19 Jun 2021 08:49:39 +0530 Subject: [PATCH 2/2] Update README.md --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d27864c..62656a9 100644 --- a/README.md +++ b/README.md @@ -150,12 +150,12 @@ app = VersionedFastAPI(app, ``` -## Custom Middleware and Decorators +## APP Decorators -All custom Middleware and Decorators should be decalared after creating a Versioned Fast API object +All app decorators should be decalared after creating a Versioned Fast API object ```python -from fastapi import FastAPI, Request +from fastapi import FastAPI, Request, Response from fastapi_versioning import VersionedFastAPI, version from starlette.middleware import Middleware from starlette.middleware.sessions import SessionMiddleware @@ -196,8 +196,7 @@ app = VersionedFastAPI(app, #Startup event @app.on_event("startup") async def startup_db_client(): - from firebase import initialize_app - app.firebase_app = initialize_app() + print("This runs on app Startup") #Custom Middlware @app.middleware("http")