Fastapi

Fastapi Project Template

Project Template for FastAPI gave a try with a FastAPI Template, https://github.com/rochacbruno/fastapi-project-template.git Projectname: gugus1234 clone the repo git clone https://github.com/rochacbruno/fastapi-project-template.git gugus1234 cd gugus1234 Switch Poetry i’d like to have poetry as virtual env manager make switch-to-poetry Rename some Stuff had to rename some string in pyproject and different files … mv project_name gugug1234 gsed -i 's/a-flask-test/gugus1234/' pyproject.toml gsed -i 's/project_name/gugus1234/' pyproject.toml gsed -i 's/project_name/gugus1234/g' gugus1234/cli.py gugus1234/app.py gugus1234/config.py gugus1234/security.py Run Poetry once poetry shell poetry lock poetry install Admin User let’s create admin user

Fastapi Simple Security

How to Protect your App with Simple Security Let’s build a small API Endpoint with FastAPI and protect it with SimpleSecurity. API key based security package for FastAPI, focused on simplicity of use: Full functionality out of the box, no configuration required API key security with local sqlite backend, working with both header and query parameters Default 15 days deprecation for generated API keys Key creation, revocation, renewing, and usage logs handled through administrator endpoints No dependencies, only requiring FastAPI and the python standard library Build new App and show the Directory Structure

Fastapi

FastAPI - Dependencies and Custom Headers Source https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/ Code from fastapi import Depends, FastAPI, Header, HTTPException app = FastAPI() async def verify_token(x_token: str = Header()): if x_token != "fake-super-secret-token": raise HTTPException(status_code=400, detail="X-Token header invalid") async def verify_key(x_key: str = Header()): if x_key != "fake-super-secret-key": raise HTTPException(status_code=400, detail="X-Key header invalid") return x_key @app.get("/items/", dependencies=[Depends(verify_token), Depends(verify_key)]) async def read_items(): return [{"item": "Foo"}, {"item": "Bar"}] Test’s Failed no Custom Header curl -s http://localhost/api/items/ |jq { "detail": [ { "loc": [ "header", "x-token" ], "msg": "field required", "type": "value_error.