from fastapi import APIRouter from fastapi.openapi.models import MediaType from starlette.exceptions import HTTPException from starlette.requests import Request from starlette.responses import Response, JSONResponse from repos.dao import DAO router = APIRouter(prefix="/api/assets", tags=["Assets"]) @router.get("/{asset_id}") async def get_asset(asset_id: str, request: Request) -> Response: dao = request.app.state.dao asset = await dao.assets.get_asset(asset_id) # 2. Проверка на существование if not asset: raise HTTPException(status_code=404, detail="Asset not found") return Response(content=asset.data, media_type="image/png") @router.get("") async def get_assets(request: Request) -> JSONResponse: dao: DAO = request.app.state.dao assets = await dao.assets.get_assets() assets_links = [] for asset in assets: assets_links.append("/api/assets/{}".format(asset.id)) return JSONResponse(content=assets_links)