Init
This commit is contained in:
commit
da4aec19f4
20
Dockerfile
Normal file
20
Dockerfile
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# Use the official Python image from the Docker Hub
|
||||||
|
FROM python:3.11-slim
|
||||||
|
|
||||||
|
# Set the working directory
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Copy the requirements file into the container
|
||||||
|
COPY requirements.txt .
|
||||||
|
|
||||||
|
# Install the dependencies
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
# Copy the rest of the application code
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Expose the port the app runs on
|
||||||
|
EXPOSE 8000
|
||||||
|
|
||||||
|
# Command to run the application
|
||||||
|
CMD ["python", "main.py"]
|
53
README.md
Normal file
53
README.md
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# FastAPI DateTime Service
|
||||||
|
|
||||||
|
This is a simple FastAPI application that provides an OpenAPI-compatible `/datetime` endpoint returning the current date, time, weekday, and calendar week.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- **OpenAPI Compatible**: Fully documented API with automatic OpenAPI documentation
|
||||||
|
- **Structured Response**: Returns time information in a consistent JSON format
|
||||||
|
- **Type Hints**: Uses Python type hints for better code clarity and IDE support
|
||||||
|
- **Comprehensive Documentation**: Detailed docstrings and OpenAPI metadata
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- Python 3.7+
|
||||||
|
- FastAPI
|
||||||
|
- Uvicorn
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
## Running the Application
|
||||||
|
|
||||||
|
To start the FastAPI server, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
The server will be available at `http://localhost:8000`.
|
||||||
|
|
||||||
|
## Endpoints
|
||||||
|
|
||||||
|
### `GET /datetime`
|
||||||
|
|
||||||
|
Returns current date, time, weekday, and calendar week.
|
||||||
|
|
||||||
|
**Response Format:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"date": "2025-09-22",
|
||||||
|
"time": "14:30:45",
|
||||||
|
"weekday": "Monday",
|
||||||
|
"calendar_week": 38
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response Fields:**
|
||||||
|
- `date` (string): Current date in YYYY-MM-DD format
|
||||||
|
- `time` (string): Current time in HH:MM:SS format
|
||||||
|
- `weekday` (string): Full weekday name (e.g., "Monday")
|
||||||
|
- `calendar_week` (integer): ISO calendar week number
|
43
main.py
Normal file
43
main.py
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
from fastapi import FastAPI
|
||||||
|
from datetime import datetime
|
||||||
|
import calendar
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
@app.get(
|
||||||
|
"/datetime",
|
||||||
|
summary="Get Current Date and Time Information",
|
||||||
|
description="""Returns the current date, time, weekday, and calendar week.
|
||||||
|
This endpoint provides time-related information in a structured JSON format
|
||||||
|
that can be used for various applications including logging, timestamps,
|
||||||
|
and scheduling.
|
||||||
|
|
||||||
|
**Response Fields:**
|
||||||
|
- `date` (string): Current date in YYYY-MM-DD format
|
||||||
|
- `time` (string): Current time in HH:MM:SS format
|
||||||
|
- `weekday` (string): Full weekday name (e.g., "Monday")
|
||||||
|
- `calendar_week` (integer): ISO calendar week number
|
||||||
|
""",
|
||||||
|
tags=["datetime"],
|
||||||
|
response_model=dict,
|
||||||
|
response_description="Current date and time information"
|
||||||
|
)
|
||||||
|
async def get_datetime() -> dict[str, Any]:
|
||||||
|
"""
|
||||||
|
Get current date and time information.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict: A dictionary containing current date, time, weekday, and calendar week
|
||||||
|
"""
|
||||||
|
now = datetime.now()
|
||||||
|
return {
|
||||||
|
"date": now.strftime("%Y-%m-%d"),
|
||||||
|
"time": now.strftime("%H:%M:%S"),
|
||||||
|
"weekday": now.strftime("%A"),
|
||||||
|
"calendar_week": now.isocalendar().week
|
||||||
|
}
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import uvicorn
|
||||||
|
uvicorn.run(app, host="0.0.0.0", port=8000)
|
2
requirements.txt
Normal file
2
requirements.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
fastapi
|
||||||
|
uvicorn
|
Loading…
x
Reference in New Issue
Block a user