From 955774b89a69cffb3abcd079d84e80b463251a3a Mon Sep 17 00:00:00 2001 From: "mula.liu" Date: Mon, 17 Nov 2025 10:32:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E9=87=8D=E4=BC=A0?= =?UTF-8?q?=E5=92=8C=E9=87=8D=E8=BD=AC=E5=BD=95=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 8196 -> 8196 bytes app.zip | Bin 65865 -> 65866 bytes app/api/endpoints/tags.py | 12 ++++++++---- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.DS_Store b/.DS_Store index 68a41482339e77b81bd25fb1b9ac129a0cd9b614..778775b77cfcf8297ece80b2a24132b1f9e2b6a0 100644 GIT binary patch delta 18 ZcmZp1XmQw(CcqlSz`(G4bGE=tegHRV1&aUx delta 18 ZcmZp1XmQw(Ccv7-z`(G1bGE=tegHU81*ZT2 diff --git a/app.zip b/app.zip index 95b62df9b9a6d5c123728959b61a28d828a8f1f9..4e8ea36464da47c83d64be512102fcc32bf0210b 100644 GIT binary patch delta 3242 zcmYjT2{=^i8=o^X_92s{u^o((8!1VpQMBlibnTghY}X#~w~b|@uB}2oLn&FNh~Y}3 z(1Yed{97?;_9%!N}z%0D|CS12d+;*RRv4C<8j^ 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 delta 3415 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 aM?eH9g4_#jeqy}WRUv3Q`uO1bKlMM&L>kNh diff --git a/app/api/endpoints/tags.py b/app/api/endpoints/tags.py index 56e3aed..6ababc6 100644 --- a/app/api/endpoints/tags.py +++ b/app/api/endpoints/tags.py @@ -1,18 +1,22 @@ from fastapi import APIRouter, Depends from app.core.database import get_db_connection from app.core.response import create_api_response -from app.core.auth import get_current_user +from app.core.auth import get_current_user, get_optional_current_user from app.models.models import Tag -from typing import List +from typing import List, Optional import mysql.connector router = APIRouter() @router.get("/tags") -def get_user_tags(current_user: dict = Depends(get_current_user)): +def get_user_tags(current_user: Optional[dict] = Depends(get_optional_current_user)): """_summary_ - 获取当前用户创建的所有标签 + 获取当前用户创建的所有标签(如果未认证则返回空列表) """ + # 如果未认证,返回空标签列表 + if not current_user: + return create_api_response(code="200", message="获取标签列表成功", data=[]) + query = "SELECT id, name, color FROM tags WHERE creator_id = %s ORDER BY name" try: with get_db_connection() as connection: