Initial FastAPI application

This commit is contained in:
m1000 committed 2026-11-13 02:27:15 +03:00
1 parent a34e861612
commit b118e1d539
6 files changed
+98

No files matched your search

+13
View File
@@ -0,0 +1,13 @@
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY ./app ./app
EXPOSE 8000
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
View File
Whitespace-only changes.
+26
View File
@@ -0,0 +1,26 @@
from fastapi import FastAPI
app = FastAPI(
title="FastAPI Demo",
description="My first application with FastAPI",
version="1.0.0",
)
@app.get("/")
async def root():
return {
"message": "Hello from FastAPI!",
"application": "fastapi-demo",
"version": "1.0.0",
}
@app.get("/health")
async def health():
return {"status": "ok"}
@app.get("/hello/{name}")
async def hello(name: str):
return {"message": f"Hello, {name}!"}
+7
View File
@@ -0,0 +1,7 @@
services:
app:
build: .
container_name: fastapi-demo
restart: unless-stopped
ports:
- "8000:8000"
+29
View File
@@ -0,0 +1,29 @@
annotated-doc==0.0.5
annotated-types==0.7.0
anyio==4.12.1
certifi==2026.10.23
click==8.1.8
exceptiongroup==1.3.1
fastapi==0.128.8
h11==0.16.0
httpcore==1.0.9
httptools==0.9.0
httpx==0.28.1
idna==3.20
iniconfig==2.1.0
packaging==26.3
pluggy==1.6.0
pydantic==2.13.5
pydantic_core==2.46.5
Pygments==2.21.0
pytest==8.4.2
python-dotenv==1.2.1
PyYAML==6.0.3
starlette==0.49.3
tomli==2.5.0
typing-inspection==0.4.2
typing_extensions==4.16.0
uvicorn==0.39.0
uvloop==0.23.0
watchfiles==1.1.1
websockets==15.0.1
+23
View File
@@ -0,0 +1,23 @@
from fastapi.testclient import TestClient
from app.main import app
client = TestClient(app)
def test_root():
response = client.get("/")
assert response.status_code == 200
assert response.json()["message"] == "Hello from FastAPI!"
def test_health():
response = client.get("/health")
assert response.status_code == 200
assert response.json() == {"status": "ok"}
def test_hello():
response = client.get("/hello/Artem")
assert response.status_code == 200
assert response.json() == {"message": "Hello, Artem!"}