Skip to content

Instantly share code, notes, and snippets.

@duyixian1234
Created December 15, 2023 08:37
Show Gist options
  • Select an option

  • Save duyixian1234/4bcfac383b9319fe28d2d9da47cbf44d to your computer and use it in GitHub Desktop.

Select an option

Save duyixian1234/4bcfac383b9319fe28d2d9da47cbf44d to your computer and use it in GitHub Desktop.
fastapi simple api
from datetime import UTC, datetime
from fastapi import FastAPI, HTTPException, Request
from fastapi.responses import JSONResponse
from pydantic import BaseModel
class Response[T](BaseModel):
code: int
success: bool
message: str
data: T
def success_response[T](data: T):
return Response[T](
code=0,
success=True,
message="",
data=data,
)
def failure_response[T](code: int, message: str):
return Response[T](
code=code,
success=False,
message=message,
data=None,
)
app = FastAPI()
@app.exception_handler(HTTPException)
@app.exception_handler(404)
async def http_exception_handler(request, exc):
return JSONResponse(
status_code=exc.status_code,
content=failure_response(exc.status_code, exc.detail).model_dump(),
)
@app.get("/")
async def root() -> Response[str]:
return success_response("Hello World")
@app.get("/time")
async def time() -> Response[datetime]:
return success_response(datetime.now(UTC))
@app.get("/ip")
async def ip(request: Request) -> Response[str]:
return success_response(request.client.host)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment