Created
December 15, 2023 08:37
-
-
Save duyixian1234/4bcfac383b9319fe28d2d9da47cbf44d to your computer and use it in GitHub Desktop.
fastapi simple api
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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