MoinMoin Logo
  • Comments
  • Immutable Page
  • Menu
    • Navigation
    • RecentChanges
    • FindPage
    • Local Site Map
    • Help
    • HelpContents
    • HelpOnMoinWikiSyntax
    • Display
    • Attachments
    • Info
    • Raw Text
    • Print View
    • Edit
    • Load
    • Save
  • Login

Navigation

  • Start
  • Sitemap
Revision 18 as of 2026-08-23 16:40:11
  • FastAPI

Contents

  1. FastAPI
    1. main.py
    2. pip , venv steps

FastAPI

  • https://fastapi.tiangolo.com/

FastAPI is a modern, fast (high-performance), web framework for building APIs with Python based on standard Python type hints.

FastAPI works OK without uv. You can build, install, and run FastAPI projects using traditional tools like pip, venv, and poetry

main.py

Install

   1 # uv An extremely fast Python package and project manager, written in Rust.
   2 # https://docs.astral.sh/uv/getting-started/installation/
   3 curl -LsSf https://astral.sh/uv/install.sh | sh
   4 pipx install uv
   5 pip install uv
   6 uv self update
   7 pip install --upgrade uv
   8 
   9 uv add "fastapi[standard]"
  10 
  11 pip install fastapi[standard]
  12 # Virtual Environment: Python's built-in venv module
  13 # Dependency Management: requirements.txt or pyproject.toml
  14 

   1 from fastapi import FastAPI
   2 
   3 app = FastAPI()
   4 
   5 @app.get("/")
   6 def read_root():
   7     return {"Hello": "World"}
   8 
   9 @app.get("/items/{item_id}")
  10 def read_item(item_id: int, q: str | None = None):
  11     return {"item_id": item_id, "q": q}

Run

uv run fastapi dev

pip , venv steps

   1 cd ~/Documents
   2 mkdir -p fastapi-test
   3 cd fastapi-test
   4 mkdir static templates
   5 python3 -m venv .venv
   6 source .venv/bin/activate
   7 
   8 cat << 'EOF' > requirements.txt
   9 fastapi[standard]
  10 pyyaml
  11 jinja2 
  12 
  13 EOF
  14 
  15 pip install -r requirements.txt 
  16 
  17 
  18 cat << 'EOF' > templates/index.html
  19 <!DOCTYPE html>
  20 <html lang="pt">
  21 <head>
  22     <meta charset="UTF-8">
  23     <title>{{ titulo }}</title>
  24 </head>
  25 <body>
  26     <h1>{{ mensagem }}</h1>
  27     <p>Este é o lado <strong>Web Server</strong> do FastAPI.</p>
  28     <p>Experimenta os outros caminhos:</p>
  29     <ul>
  30         <li>Aceder à API: <a href="/api/v1/items">/api/v1/items</a></li>
  31         <li>Ver documentação interativa: <a href="/docs">/docs</a></li>
  32         <li>Descarregar Contrato OpenAPI YAML: <a href="/openapi.yaml">/openapi.yaml</a></li>
  33     </ul>
  34 </body>
  35 </html>
  36 EOF
  37 
  38 
  39 
  40 cat << 'EOF' > main.py
  41 import yaml
  42 from fastapi import FastAPI, Request
  43 from fastapi.responses import HTMLResponse, Response
  44 from fastapi.staticfiles import StaticFiles
  45 from fastapi.templating import Jinja2Templates
  46 
  47 app = FastAPI()
  48 
  49 app.mount("/static", StaticFiles(directory="static"), name="static")
  50 templates = Jinja2Templates(directory="templates")
  51 
  52 @app.get("/", response_class=HTMLResponse, include_in_schema=False)
  53 def render_web_page(request: Request):
  54     """serves index.html."""
  55     return templates.TemplateResponse(
  56         request, "index.html", 
  57         {
  58             "request": request, 
  59             "titulo": "FastAPI Tudo-Em-Um", 
  60             "mensagem": "Bem-vindo ao Servidor Web + API!"
  61         }
  62     )
  63 
  64 @app.get("/message")
  65 def read_root():
  66     return {"message": "Hello world!"}
  67 
  68 @app.get("/openapi.yaml", include_in_schema=False)
  69 def get_openapi_yaml():
  70     openapi_json = app.openapi()
  71     openapi_yaml = yaml.dump(openapi_json, sort_keys=False)
  72     return Response(content=openapi_yaml, media_type="text/yaml")
  73 
  74 EOF
  75 
  76 fastapi dev main.py
  77 # /home/vitor/Documents/fastapi-test/.venv/bin/python3 \
  78 #  /home/vitor/Documents/fastapi-test/.venv/bin/fastapi dev main.py
  79 # http://127.0.0.1:8000
  80 # Server started at http://127.0.0.1:8000
  81 # OpenAPI/Swagger documentation at http://127.0.0.1:8000/docs
  82 # http://127.0.0.1:8000/openapi.yaml
  83 # http://127.0.0.1:8000/openapi.json
  84 
  85 uvicorn main:app --reload
  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01