From d8d8c6b454b63c503bbd5fb8b59db56ab202d736 Mon Sep 17 00:00:00 2001 From: Stefan Stammberger Date: Fri, 10 Sep 2021 21:41:37 +0200 Subject: [PATCH] docs: add a FastAPI transition documentation --- docs/guide/fastapi_transition.md | 55 ++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 docs/guide/fastapi_transition.md diff --git a/docs/guide/fastapi_transition.md b/docs/guide/fastapi_transition.md new file mode 100644 index 000000000..efccf317e --- /dev/null +++ b/docs/guide/fastapi_transition.md @@ -0,0 +1,55 @@ +## Returning data from API calls +**old:** +```python +return ( + { + "id": wallet.wallet.id, + "name": wallet.wallet.name, + "balance": wallet.wallet.balance_msat + }, + HTTPStatus.OK, +) +``` +FastAPI returns `HTTPStatus.OK` by default id no Exception is raised + +**new:** +```python +return { + "id": wallet.wallet.id, + "name": wallet.wallet.name, + "balance": wallet.wallet.balance_msat +} +``` + +To change the default HTTPStatus, add it to the path decorator +```python +@core_app.post("/api/v1/payments", status_code=HTTPStatus.CREATED) +async def payments(): + pass +``` + +## Raise exceptions +**old:** +```python +return ( + {"message": f"Failed to connect to {domain}."}, + HTTPStatus.BAD_REQUEST, +) +``` + +**new:** + +Raise an exception to return a status code other than the default status code. +```python +raise HTTPException( + status_code=HTTPStatus.BAD_REQUEST, + detail=f"Failed to connect to {domain}." +) +``` +## Possible optimizations +### Use Redis as a cache server +Instead of hitting the database over and over again, we can store a short lived object in [Redis](https://redis.io) for an arbitrary key. +Example: +* Get transactions for a wallet ID +* User data for a user id +* Wallet data for a Admin / Invoice key \ No newline at end of file