|
Size: 1714
Comment:
|
Size: 2856
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 52: | Line 52: |
| mkdir static templates | |
| Line 54: | Line 55: |
| echo "fastapi[standard]" > requirements.txt | cat << 'EOF' > requirements.txt fastapi[standard] pyyaml jinja2 EOF |
| Line 58: | Line 65: |
cat << 'EOF' > templates/index.html <!DOCTYPE html> <html lang="pt"> <head> <meta charset="UTF-8"> <title>{{ titulo }}</title> </head> <body> <h1>{{ mensagem }}</h1> <p>Este é o lado <strong>Web Server</strong> do FastAPI.</p> <p>Experimenta os outros caminhos:</p> <ul> <li>Aceder à API: <a href="/api/v1/items">/api/v1/items</a></li> <li>Ver documentação interativa: <a href="/docs">/docs</a></li> <li>Descarregar Contrato OpenAPI YAML: <a href="/openapi.yaml">/openapi.yaml</a></li> </ul> </body> </html> EOF |
|
| Line 59: | Line 89: |
| import yaml | |
| Line 60: | Line 91: |
| from fastapi.responses import Response | |
| Line 65: | Line 97: |
| return {"mensagem": "Olá, Mundo! Criado via terminal!"} | return {"message": "Hello world!"} @app.get("/openapi.yaml", include_in_schema=False) def get_openapi_yaml(): openapi_json = app.openapi() openapi_yaml = yaml.dump(openapi_json, sort_keys=False) return Response(content=openapi_yaml, media_type="text/yaml") |
| Line 69: | Line 108: |
| # /home/vitor/Documents/fastapi-test/.venv/bin/python3 \ # /home/vitor/Documents/fastapi-test/.venv/bin/fastapi dev main.py |
|
| Line 71: | Line 112: |
| # Documentation at http://127.0.0.1:8000/docs |
# OpenAPI/Swagger documentation at http://127.0.0.1:8000/docs # http://127.0.0.1:8000/openapi.yaml # http://127.0.0.1:8000/openapi.json |
Contents
FastAPI
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
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
43 from fastapi.responses import Response
44
45 app = FastAPI()
46
47 @app.get("/")
48 def read_root():
49 return {"message": "Hello world!"}
50
51 @app.get("/openapi.yaml", include_in_schema=False)
52 def get_openapi_yaml():
53 openapi_json = app.openapi()
54 openapi_yaml = yaml.dump(openapi_json, sort_keys=False)
55 return Response(content=openapi_yaml, media_type="text/yaml")
56
57 EOF
58
59 fastapi dev main.py
60 # /home/vitor/Documents/fastapi-test/.venv/bin/python3 \
61 # /home/vitor/Documents/fastapi-test/.venv/bin/fastapi dev main.py
62 # http://127.0.0.1:8000
63 # Server started at http://127.0.0.1:8000
64 # OpenAPI/Swagger documentation at http://127.0.0.1:8000/docs
65 # http://127.0.0.1:8000/openapi.yaml
66 # http://127.0.0.1:8000/openapi.json
67
68 uvicorn main:app --reload
