Skip to content

Commit 319ba13

Browse files
authored
Optimize routes to better align with RESTful (#673)
* Optimize routes to better align with RESTful * Add codes endpoint description * Update jinja templates * fix typo * fix sql
1 parent 0d1f05d commit 319ba13

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+624
-640
lines changed

backend/app/admin/api/v1/auth/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@
88
router = APIRouter(prefix='/auth')
99

1010
router.include_router(auth_router, tags=['授权'])
11-
router.include_router(captcha_router, prefix='/captcha', tags=['验证码'])
11+
router.include_router(captcha_router, tags=['验证码'])

backend/app/admin/api/v1/auth/auth.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@
1111
from backend.app.admin.schema.user import AuthLoginParam
1212
from backend.app.admin.service.auth_service import auth_service
1313
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
14+
from backend.common.security.jwt import DependsJwtAuth
1415

1516
router = APIRouter()
1617

1718

1819
@router.post('/login/swagger', summary='swagger 调试专用', description='用于快捷获取 token 进行 swagger 认证')
19-
async def swagger_login(obj: Annotated[HTTPBasicCredentials, Depends()]) -> GetSwaggerToken:
20+
async def login_swagger(obj: Annotated[HTTPBasicCredentials, Depends()]) -> GetSwaggerToken:
2021
token, user = await auth_service.swagger_login(obj=obj)
21-
return GetSwaggerToken(access_token=token, user=user) # type: ignore
22+
return GetSwaggerToken(access_token=token, user=user)
2223

2324

2425
@router.post(
@@ -27,20 +28,26 @@ async def swagger_login(obj: Annotated[HTTPBasicCredentials, Depends()]) -> GetS
2728
description='json 格式登录, 仅支持在第三方api工具调试, 例如: postman',
2829
dependencies=[Depends(RateLimiter(times=5, minutes=1))],
2930
)
30-
async def user_login(
31+
async def login(
3132
request: Request, response: Response, obj: AuthLoginParam, background_tasks: BackgroundTasks
3233
) -> ResponseSchemaModel[GetLoginToken]:
3334
data = await auth_service.login(request=request, response=response, obj=obj, background_tasks=background_tasks)
3435
return response_base.success(data=data)
3536

3637

37-
@router.post('/tokens/refresh', summary='刷新 token')
38+
@router.get('/codes', summary='获取所有授权码', description='适配 vben admin v5', dependencies=[DependsJwtAuth])
39+
async def get_codes(request: Request) -> ResponseSchemaModel[list[str]]:
40+
codes = await auth_service.get_codes(request=request)
41+
return response_base.success(data=codes)
42+
43+
44+
@router.post('/tokens', summary='刷新 token')
3845
async def refresh_token(request: Request) -> ResponseSchemaModel[GetNewToken]:
39-
data = await auth_service.new_token(request=request)
46+
data = await auth_service.refresh_token(request=request)
4047
return response_base.success(data=data)
4148

4249

4350
@router.post('/logout', summary='用户登出')
44-
async def user_logout(request: Request, response: Response) -> ResponseModel:
51+
async def logout(request: Request, response: Response) -> ResponseModel:
4552
await auth_service.logout(request=request, response=response)
4653
return response_base.success()

backend/app/admin/api/v1/auth/captcha.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515

1616
@router.get(
17-
'',
17+
'/captcha',
1818
summary='获取登录验证码',
1919
dependencies=[Depends(RateLimiter(times=5, seconds=10))],
2020
)

backend/app/admin/api/v1/log/login_log.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from fastapi import APIRouter, Depends, Query
66

7-
from backend.app.admin.schema.login_log import GetLoginLogDetail
7+
from backend.app.admin.schema.login_log import DeleteLoginLogParam, GetLoginLogDetail
88
from backend.app.admin.service.login_log_service import login_log_service
99
from backend.common.pagination import DependsPagination, PageData, paging_data
1010
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
@@ -24,7 +24,7 @@
2424
DependsPagination,
2525
],
2626
)
27-
async def get_pagination_login_logs(
27+
async def get_login_logs_paged(
2828
db: CurrentSession,
2929
username: Annotated[str | None, Query(description='用户名')] = None,
3030
status: Annotated[int | None, Query(description='状态')] = None,
@@ -43,8 +43,8 @@ async def get_pagination_login_logs(
4343
DependsRBAC,
4444
],
4545
)
46-
async def delete_login_log(pk: Annotated[list[int], Query(description='登录日志 ID 列表')]) -> ResponseModel:
47-
count = await login_log_service.delete(pk=pk)
46+
async def delete_login_logs(obj: DeleteLoginLogParam) -> ResponseModel:
47+
count = await login_log_service.delete(obj=obj)
4848
if count > 0:
4949
return response_base.success()
5050
return response_base.fail()
@@ -54,7 +54,7 @@ async def delete_login_log(pk: Annotated[list[int], Query(description='登录日
5454
'/all',
5555
summary='清空登录日志',
5656
dependencies=[
57-
Depends(RequestPermission('log:login:empty')),
57+
Depends(RequestPermission('log:login:clear')),
5858
DependsRBAC,
5959
],
6060
)

backend/app/admin/api/v1/log/opera_log.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from fastapi import APIRouter, Depends, Query
66

7-
from backend.app.admin.schema.opera_log import GetOperaLogDetail
7+
from backend.app.admin.schema.opera_log import DeleteOperaLogParam, GetOperaLogDetail
88
from backend.app.admin.service.opera_log_service import opera_log_service
99
from backend.common.pagination import DependsPagination, PageData, paging_data
1010
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
@@ -24,7 +24,7 @@
2424
DependsPagination,
2525
],
2626
)
27-
async def get_pagination_opera_logs(
27+
async def get_opera_logs_paged(
2828
db: CurrentSession,
2929
username: Annotated[str | None, Query(description='用户名')] = None,
3030
status: Annotated[int | None, Query(description='状态')] = None,
@@ -43,8 +43,8 @@ async def get_pagination_opera_logs(
4343
DependsRBAC,
4444
],
4545
)
46-
async def delete_opera_log(pk: Annotated[list[int], Query(description='操作日志 ID 列表')]) -> ResponseModel:
47-
count = await opera_log_service.delete(pk=pk)
46+
async def delete_opera_logs(obj: DeleteOperaLogParam) -> ResponseModel:
47+
count = await opera_log_service.delete(obj=obj)
4848
if count > 0:
4949
return response_base.success()
5050
return response_base.fail()
@@ -54,7 +54,7 @@ async def delete_opera_log(pk: Annotated[list[int], Query(description='操作日
5454
'/all',
5555
summary='清空操作日志',
5656
dependencies=[
57-
Depends(RequestPermission('log:opera:empty')),
57+
Depends(RequestPermission('log:opera:clear')),
5858
DependsRBAC,
5959
],
6060
)

backend/app/admin/api/v1/monitor/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@
1010

1111
router.include_router(redis_router, prefix='/redis', tags=['redis监控'])
1212
router.include_router(server_router, prefix='/server', tags=['服务器监控'])
13-
router.include_router(token_router, prefix='/online', tags=['在线用户'])
13+
router.include_router(token_router, prefix='/sessions', tags=['会话监控'])

backend/app/admin/api/v1/monitor/online.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020

2121
@router.get('', summary='获取在线用户', dependencies=[DependsJwtAuth])
22-
async def get_online(
22+
async def get_sessions(
2323
username: Annotated[str | None, Query(description='用户名')] = None,
2424
) -> ResponseSchemaModel[list[GetTokenDetail]]:
2525
token_keys = await redis_client.keys(f'{settings.TOKEN_REDIS_PREFIX}:*')
@@ -75,13 +75,13 @@ def append_token_detail() -> None:
7575

7676
@router.delete(
7777
'/{pk}',
78-
summary='踢下线',
78+
summary='强制下线',
7979
dependencies=[
80-
Depends(RequestPermission('sys:token:kick')),
80+
Depends(RequestPermission('sys:session:delete')),
8181
DependsRBAC,
8282
],
8383
)
84-
async def kick_out(
84+
async def delete_session(
8585
request: Request,
8686
pk: Annotated[int, Path(description='用户 ID')],
8787
session_uuid: Annotated[str, Query(description='会话 UUID')],

backend/app/admin/api/v1/sys/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
from backend.app.admin.api.v1.sys.data_rule import router as data_rule_router
66
from backend.app.admin.api.v1.sys.data_scope import router as data_scope_router
77
from backend.app.admin.api.v1.sys.dept import router as dept_router
8+
from backend.app.admin.api.v1.sys.files import router as file_router
89
from backend.app.admin.api.v1.sys.menu import router as menu_router
910
from backend.app.admin.api.v1.sys.plugin import router as plugin_router
1011
from backend.app.admin.api.v1.sys.role import router as role_router
11-
from backend.app.admin.api.v1.sys.upload import router as upload_router
1212
from backend.app.admin.api.v1.sys.user import router as user_router
1313

1414
router = APIRouter(prefix='/sys')
@@ -19,5 +19,5 @@
1919
router.include_router(user_router, prefix='/users', tags=['系统用户'])
2020
router.include_router(data_rule_router, prefix='/data-rules', tags=['系统数据规则'])
2121
router.include_router(data_scope_router, prefix='/data-scopes', tags=['系统数据范围'])
22-
router.include_router(upload_router, prefix='/upload', tags=['系统上传'])
22+
router.include_router(file_router, prefix='/files', tags=['系统文件'])
2323
router.include_router(plugin_router, prefix='/plugins', tags=['系统插件'])

backend/app/admin/api/v1/sys/data_rule.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from backend.app.admin.schema.data_rule import (
88
CreateDataRuleParam,
9+
DeleteDataRuleParam,
910
GetDataRuleColumnDetail,
1011
GetDataRuleDetail,
1112
UpdateDataRuleParam,
@@ -57,7 +58,7 @@ async def get_data_rule(
5758
DependsPagination,
5859
],
5960
)
60-
async def get_pagination_data_rules(
61+
async def get_data_rules_paged(
6162
db: CurrentSession, name: Annotated[str | None, Query(description='规则名称')] = None
6263
) -> ResponseSchemaModel[PageData[GetDataRuleDetail]]:
6364
data_rule_select = await data_rule_service.get_select(name=name)
@@ -103,8 +104,8 @@ async def update_data_rule(
103104
DependsRBAC,
104105
],
105106
)
106-
async def delete_data_rule(pk: Annotated[list[int], Query(description='数据规则 ID 列表')]) -> ResponseModel:
107-
count = await data_rule_service.delete(pk=pk)
107+
async def delete_data_rules(obj: DeleteDataRuleParam) -> ResponseModel:
108+
count = await data_rule_service.delete(obj=obj)
108109
if count > 0:
109110
return response_base.success()
110111
return response_base.fail()

backend/app/admin/api/v1/sys/data_scope.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from backend.app.admin.schema.data_scope import (
88
CreateDataScopeParam,
9+
DeleteDataScopeParam,
910
GetDataScopeDetail,
1011
GetDataScopeWithRelationDetail,
1112
UpdateDataScopeParam,
@@ -52,7 +53,7 @@ async def get_data_scope_rules(
5253
DependsPagination,
5354
],
5455
)
55-
async def get_pagination_data_scopes(
56+
async def get_data_scopes_paged(
5657
db: CurrentSession,
5758
name: Annotated[str | None, Query(description='范围名称')] = None,
5859
status: Annotated[int | None, Query(description='状态')] = None,
@@ -117,8 +118,8 @@ async def update_data_scope_rules(
117118
DependsRBAC,
118119
],
119120
)
120-
async def delete_data_scope(pk: Annotated[list[int], Query(description='数据范围 ID 列表')]) -> ResponseModel:
121-
count = await data_scope_service.delete(pk=pk)
121+
async def delete_data_scopes(obj: DeleteDataScopeParam) -> ResponseModel:
122+
count = await data_scope_service.delete(obj=obj)
122123
if count > 0:
123124
return response_base.success()
124125
return response_base.fail()

0 commit comments

Comments
 (0)