From 0ea0d0e82af64980c17e15da1e85155e28a6be1b Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Thu, 14 Feb 2019 10:57:49 -0800 Subject: [PATCH] Add Open API prefix route - correct docs behind reverse proxy (#26) Add Open API prefix route - correct docs behind reverse proxy. --- .../img/tutorial/sub-applications/image01.png | Bin 0 -> 50472 bytes .../img/tutorial/sub-applications/image02.png | Bin 0 -> 53366 bytes docs/src/sub_applications/tutorial001.py | 19 ++++ docs/tutorial/sub-applications-proxy.md | 95 ++++++++++++++++++ fastapi/applications.py | 9 +- fastapi/openapi/utils.py | 5 +- mkdocs.yml | 1 + .../test_sub_applications/__init__.py | 0 .../test_sub_applications/test_tutorial001.py | 66 ++++++++++++ 9 files changed, 191 insertions(+), 4 deletions(-) create mode 100644 docs/img/tutorial/sub-applications/image01.png create mode 100644 docs/img/tutorial/sub-applications/image02.png create mode 100644 docs/src/sub_applications/tutorial001.py create mode 100644 docs/tutorial/sub-applications-proxy.md create mode 100644 tests/test_tutorial/test_sub_applications/__init__.py create mode 100644 tests/test_tutorial/test_sub_applications/test_tutorial001.py diff --git a/docs/img/tutorial/sub-applications/image01.png b/docs/img/tutorial/sub-applications/image01.png new file mode 100644 index 0000000000000000000000000000000000000000..7627144f4356ec2cd228875c0b513fd3143877df GIT binary patch literal 50472 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 literal 0 HcmV?d00001 diff --git a/docs/src/sub_applications/tutorial001.py b/docs/src/sub_applications/tutorial001.py new file mode 100644 index 000000000..3b1f77a82 --- /dev/null +++ b/docs/src/sub_applications/tutorial001.py @@ -0,0 +1,19 @@ +from fastapi import FastAPI + +app = FastAPI() + + +@app.get("/app") +def read_main(): + return {"message": "Hello World from main app"} + + +subapi = FastAPI(openapi_prefix="/subapi") + + +@subapi.get("/sub") +def read_sub(): + return {"message": "Hello World from sub API"} + + +app.mount("/subapi", subapi) diff --git a/docs/tutorial/sub-applications-proxy.md b/docs/tutorial/sub-applications-proxy.md new file mode 100644 index 000000000..daf67429b --- /dev/null +++ b/docs/tutorial/sub-applications-proxy.md @@ -0,0 +1,95 @@ +There are at least two situations where you could need to create your **FastAPI** application using some specific paths. + +But then you need to set them up to be served with a path prefix. + +It could happen if you have a: + +* **Proxy** server. +* You are "**mounting**" a FastAPI application inside another FastAPI application (or inside another ASGI application, like Starlette). + +## Proxy + +Having a proxy in this case means that you could declare a path at `/app`, but then, you could need to add a layer on top (the Proxy) that would put your **FastAPI** application under a path like `/api/v1`. + +In this case, the original path `/app` will actually be served at `/api/v1/app`. + +Even though your application "thinks" it is serving at `/app`. + +And the Proxy could be re-writing the path "on the fly" to keep your application convinced that it is serving at `/app`. + +Up to here, everything would work as normally. + +But then, when you open the integrated docs, they would expect to get the OpenAPI schema at `/openapi.json`, instead of `/api/v1/openapi.json`. + +So, the frontend (that runs in the browser) would try to reach `/openapi.json` and wouldn't be able to get the OpenAPI schema. + +So, it's needed that the frontend looks for the OpenAPI schema at `/api/v1/openapi.json`. + +And it's also needed that the returned JSON OpenAPI schema has the defined path at `/api/v1/app` (behind the proxy) instead of `/app`. + +--- + +For these cases, you can declare an `openapi_prefix` parameter in your `FastAPI` application. + +See the section below, about "mounting", for an example. + + +## Mounting a **FastAPI** application + +"Mounting" means adding a complete "independent" application in a specific path, that then takes care of handling all the sub-paths. + +You could want to do this if you have several "independent" applications that you want to separate, having their own independent OpenAPI schema and user interfaces. + +### Top-level application + +First, create the main, top-level, **FastAPI** application, and its path operations: + +```Python hl_lines="3 6 7 8" +{!./src/sub_applications/tutorial001.py!} +``` + +### Sub-application + +Then, create your sub-application, and its path operations. + +This sub-application is just another standard FastAPI application, but this is the one that will be "mounted". + +When creating the sub-application, use the parameter `openapi_prefix`. In this case, with a prefix of `/subapi`: + +```Python hl_lines="11 14 15 16" +{!./src/sub_applications/tutorial001.py!} +``` + +### Mount the sub-application + +In your top-level application, `app`, mount the sub-application, `subapi`. + +Here you need to make sure you use the same path that you used for the `openapi_prefix`, in this case, `/subapi`: + +```Python hl_lines="11 19" +{!./src/sub_applications/tutorial001.py!} +``` + +## Check the automatic API docs + +Now, run `uvicorn`, if your file is at `main.py`, it would be: + +```bash +uvicorn main:app --debug +``` + +And open the docs at http://127.0.0.1:8000/docs. + +You will see the automatic API docs for the main app, including only its own paths: + + + + +And then, open the docs for the sub-application, at http://127.0.0.1:8000/subapi/docs. + +You will see the automatic API docs for the sub-application, including only its own sub-paths, with their correct prefix: + + + + +If you try interacting with any of the two user interfaces, they will work, because the browser will be able to talk to the correct path (or sub-path). \ No newline at end of file diff --git a/fastapi/applications.py b/fastapi/applications.py index 2d5a0b862..ac47b130f 100644 --- a/fastapi/applications.py +++ b/fastapi/applications.py @@ -25,6 +25,7 @@ class FastAPI(Starlette): description: str = "", version: str = "0.1.0", openapi_url: Optional[str] = "/openapi.json", + openapi_prefix: str = "", docs_url: Optional[str] = "/docs", redoc_url: Optional[str] = "/redoc", **extra: Dict[str, Any], @@ -43,6 +44,7 @@ class FastAPI(Starlette): self.description = description self.version = version self.openapi_url = openapi_url + self.openapi_prefix = openapi_prefix.rstrip("/") self.docs_url = docs_url self.redoc_url = redoc_url self.extra = extra @@ -66,6 +68,7 @@ class FastAPI(Starlette): openapi_version=self.openapi_version, description=self.description, routes=self.routes, + openapi_prefix=self.openapi_prefix, ) return self.openapi_schema @@ -80,7 +83,8 @@ class FastAPI(Starlette): self.add_route( self.docs_url, lambda r: get_swagger_ui_html( - openapi_url=self.openapi_url, title=self.title + " - Swagger UI" + openapi_url=self.openapi_prefix + self.openapi_url, + title=self.title + " - Swagger UI", ), include_in_schema=False, ) @@ -88,7 +92,8 @@ class FastAPI(Starlette): self.add_route( self.redoc_url, lambda r: get_redoc_html( - openapi_url=self.openapi_url, title=self.title + " - ReDoc" + openapi_url=self.openapi_prefix + self.openapi_url, + title=self.title + " - ReDoc", ), include_in_schema=False, ) diff --git a/fastapi/openapi/utils.py b/fastapi/openapi/utils.py index d681088e5..4a603aa85 100644 --- a/fastapi/openapi/utils.py +++ b/fastapi/openapi/utils.py @@ -215,7 +215,8 @@ def get_openapi( version: str, openapi_version: str = "3.0.2", description: str = None, - routes: Sequence[BaseRoute] + routes: Sequence[BaseRoute], + openapi_prefix: str = "" ) -> Dict: info = {"title": title, "version": version} if description: @@ -234,7 +235,7 @@ def get_openapi( if result: path, security_schemes, path_definitions = result if path: - paths.setdefault(route.path, {}).update(path) + paths.setdefault(openapi_prefix + route.path, {}).update(path) if security_schemes: components.setdefault("securitySchemes", {}).update( security_schemes diff --git a/mkdocs.yml b/mkdocs.yml index f8a3b3116..d3631b7f7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -57,6 +57,7 @@ nav: - SQL (Relational) Databases: 'tutorial/sql-databases.md' - NoSQL (Distributed / Big Data) Databases: 'tutorial/nosql-databases.md' - Bigger Applications - Multiple Files: 'tutorial/bigger-applications.md' + - Sub Applications - Under a Proxy: 'tutorial/sub-applications-proxy.md' - Application Configuration: 'tutorial/application-configuration.md' - Extra Starlette options: 'tutorial/extra-starlette.md' - Concurrency and async / await: 'async.md' diff --git a/tests/test_tutorial/test_sub_applications/__init__.py b/tests/test_tutorial/test_sub_applications/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_tutorial/test_sub_applications/test_tutorial001.py b/tests/test_tutorial/test_sub_applications/test_tutorial001.py new file mode 100644 index 000000000..87b44abbe --- /dev/null +++ b/tests/test_tutorial/test_sub_applications/test_tutorial001.py @@ -0,0 +1,66 @@ +from starlette.testclient import TestClient + +from sub_applications.tutorial001 import app + +client = TestClient(app) + +openapi_schema_main = { + "openapi": "3.0.2", + "info": {"title": "Fast API", "version": "0.1.0"}, + "paths": { + "/app": { + "get": { + "responses": { + "200": { + "description": "Successful Response", + "content": {"application/json": {"schema": {}}}, + } + }, + "summary": "Read Main Get", + "operationId": "read_main_app_get", + } + } + }, +} +openapi_schema_sub = { + "openapi": "3.0.2", + "info": {"title": "Fast API", "version": "0.1.0"}, + "paths": { + "/subapi/sub": { + "get": { + "responses": { + "200": { + "description": "Successful Response", + "content": {"application/json": {"schema": {}}}, + } + }, + "summary": "Read Sub Get", + "operationId": "read_sub_sub_get", + } + } + }, +} + + +def test_openapi_schema_main(): + response = client.get("/openapi.json") + assert response.status_code == 200 + assert response.json() == openapi_schema_main + + +def test_main(): + response = client.get("/app") + assert response.status_code == 200 + assert response.json() == {"message": "Hello World from main app"} + + +def test_openapi_schema_sub(): + response = client.get("/subapi/openapi.json") + assert response.status_code == 200 + assert response.json() == openapi_schema_sub + + +def test_sub(): + response = client.get("/subapi/sub") + assert response.status_code == 200 + assert response.json() == {"message": "Hello World from sub API"}