""" Django Ninja API configuration. """ from ninja import NinjaAPI from ninja.errors import HttpError, ValidationError from ninja_jwt.authentication import JWTAuth # Import routers from apps from apps.users.api import router as auth_router from apps.users.friends import router as friends_router from apps.products.api import router as products_router, category_router, website_router from apps.bounties.api import router as bounties_router from apps.bounties.payments import router as payments_router from apps.favorites.api import router as favorites_router from apps.notifications.api import router as notifications_router from apps.admin.api import router as admin_router from config.search import router as search_router from apps.common.errors import build_error_payload # Create main API instance api = NinjaAPI( title="AI Web API", version="1.0.0", description="Backend API for AI Web application", ) @api.exception_handler(HttpError) def on_http_error(request, exc: HttpError): return api.create_response( request, build_error_payload(status_code=exc.status_code, message=str(exc)), status=exc.status_code, ) @api.exception_handler(ValidationError) def on_validation_error(request, exc: ValidationError): details = getattr(exc, "errors", None) return api.create_response( request, build_error_payload( status_code=400, message="请求参数校验失败", details=details, code="validation_error", ), status=400, ) @api.exception_handler(Exception) def on_unhandled_error(request, exc: Exception): return api.create_response( request, build_error_payload(status_code=500, message="服务器内部错误"), status=500, ) # Register routers api.add_router("/auth/", auth_router, tags=["认证"]) api.add_router("/friends/", friends_router, tags=["好友"]) api.add_router("/categories/", category_router, tags=["分类"]) api.add_router("/websites/", website_router, tags=["网站"]) api.add_router("/products/", products_router, tags=["商品"]) api.add_router("/bounties/", bounties_router, tags=["悬赏"]) api.add_router("/payments/", payments_router, tags=["支付"]) api.add_router("/favorites/", favorites_router, tags=["收藏"]) api.add_router("/notifications/", notifications_router, tags=["通知"]) api.add_router("/search/", search_router, tags=["搜索"]) api.add_router("/admin/", admin_router, tags=["后台"])