Skip to content

Commit 95a6f31

Browse files
committed
perf: ResponseUtil补充完整参数
1 parent 1838a47 commit 95a6f31

File tree

1 file changed

+81
-8
lines changed

1 file changed

+81
-8
lines changed

ruoyi-fastapi-backend/utils/response_util.py

Lines changed: 81 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
from fastapi.encoders import jsonable_encoder
44
from fastapi.responses import JSONResponse, Response, StreamingResponse
55
from pydantic import BaseModel
6-
from typing import Any, Dict, Optional
6+
from starlette.background import BackgroundTask
7+
from typing import Any, Dict, Mapping, Optional
78
from config.constant import HttpStatusConstant
89

910

@@ -20,6 +21,9 @@ def success(
2021
rows: Optional[Any] = None,
2122
dict_content: Optional[Dict] = None,
2223
model_content: Optional[BaseModel] = None,
24+
headers: Optional[Mapping[str, str]] = None,
25+
media_type: Optional[str] = None,
26+
background: Optional[BackgroundTask] = None,
2327
) -> Response:
2428
"""
2529
成功响应方法
@@ -29,6 +33,9 @@ def success(
2933
:param rows: 可选,成功响应结果中属性为rows的值
3034
:param dict_content: 可选,dict类型,成功响应结果中自定义属性的值
3135
:param model_content: 可选,BaseModel类型,成功响应结果中自定义属性的值
36+
:param headers: 可选,响应头信息
37+
:param media_type: 可选,响应结果媒体类型
38+
:param background: 可选,响应返回后执行的后台任务
3239
:return: 成功响应结果
3340
"""
3441
result = {'code': HttpStatusConstant.SUCCESS, 'msg': msg}
@@ -44,7 +51,13 @@ def success(
4451

4552
result.update({'success': True, 'time': datetime.now()})
4653

47-
return JSONResponse(status_code=status.HTTP_200_OK, content=jsonable_encoder(result))
54+
return JSONResponse(
55+
status_code=status.HTTP_200_OK,
56+
content=jsonable_encoder(result),
57+
headers=headers,
58+
media_type=media_type,
59+
background=background,
60+
)
4861

4962
@classmethod
5063
def failure(
@@ -54,6 +67,9 @@ def failure(
5467
rows: Optional[Any] = None,
5568
dict_content: Optional[Dict] = None,
5669
model_content: Optional[BaseModel] = None,
70+
headers: Optional[Mapping[str, str]] = None,
71+
media_type: Optional[str] = None,
72+
background: Optional[BackgroundTask] = None,
5773
) -> Response:
5874
"""
5975
失败响应方法
@@ -63,6 +79,9 @@ def failure(
6379
:param rows: 可选,失败响应结果中属性为rows的值
6480
:param dict_content: 可选,dict类型,失败响应结果中自定义属性的值
6581
:param model_content: 可选,BaseModel类型,失败响应结果中自定义属性的值
82+
:param headers: 可选,响应头信息
83+
:param media_type: 可选,响应结果媒体类型
84+
:param background: 可选,响应返回后执行的后台任务
6685
:return: 失败响应结果
6786
"""
6887
result = {'code': HttpStatusConstant.WARN, 'msg': msg}
@@ -78,7 +97,13 @@ def failure(
7897

7998
result.update({'success': False, 'time': datetime.now()})
8099

81-
return JSONResponse(status_code=status.HTTP_200_OK, content=jsonable_encoder(result))
100+
return JSONResponse(
101+
status_code=status.HTTP_200_OK,
102+
content=jsonable_encoder(result),
103+
headers=headers,
104+
media_type=media_type,
105+
background=background,
106+
)
82107

83108
@classmethod
84109
def unauthorized(
@@ -88,6 +113,9 @@ def unauthorized(
88113
rows: Optional[Any] = None,
89114
dict_content: Optional[Dict] = None,
90115
model_content: Optional[BaseModel] = None,
116+
headers: Optional[Mapping[str, str]] = None,
117+
media_type: Optional[str] = None,
118+
background: Optional[BackgroundTask] = None,
91119
) -> Response:
92120
"""
93121
未认证响应方法
@@ -97,6 +125,9 @@ def unauthorized(
97125
:param rows: 可选,未认证响应结果中属性为rows的值
98126
:param dict_content: 可选,dict类型,未认证响应结果中自定义属性的值
99127
:param model_content: 可选,BaseModel类型,未认证响应结果中自定义属性的值
128+
:param headers: 可选,响应头信息
129+
:param media_type: 可选,响应结果媒体类型
130+
:param background: 可选,响应返回后执行的后台任务
100131
:return: 未认证响应结果
101132
"""
102133
result = {'code': HttpStatusConstant.UNAUTHORIZED, 'msg': msg}
@@ -112,7 +143,13 @@ def unauthorized(
112143

113144
result.update({'success': False, 'time': datetime.now()})
114145

115-
return JSONResponse(status_code=status.HTTP_200_OK, content=jsonable_encoder(result))
146+
return JSONResponse(
147+
status_code=status.HTTP_200_OK,
148+
content=jsonable_encoder(result),
149+
headers=headers,
150+
media_type=media_type,
151+
background=background,
152+
)
116153

117154
@classmethod
118155
def forbidden(
@@ -122,6 +159,9 @@ def forbidden(
122159
rows: Optional[Any] = None,
123160
dict_content: Optional[Dict] = None,
124161
model_content: Optional[BaseModel] = None,
162+
headers: Optional[Mapping[str, str]] = None,
163+
media_type: Optional[str] = None,
164+
background: Optional[BackgroundTask] = None,
125165
) -> Response:
126166
"""
127167
未授权响应方法
@@ -131,6 +171,9 @@ def forbidden(
131171
:param rows: 可选,未授权响应结果中属性为rows的值
132172
:param dict_content: 可选,dict类型,未授权响应结果中自定义属性的值
133173
:param model_content: 可选,BaseModel类型,未授权响应结果中自定义属性的值
174+
:param headers: 可选,响应头信息
175+
:param media_type: 可选,响应结果媒体类型
176+
:param background: 可选,响应返回后执行的后台任务
134177
:return: 未授权响应结果
135178
"""
136179
result = {'code': HttpStatusConstant.FORBIDDEN, 'msg': msg}
@@ -146,7 +189,13 @@ def forbidden(
146189

147190
result.update({'success': False, 'time': datetime.now()})
148191

149-
return JSONResponse(status_code=status.HTTP_200_OK, content=jsonable_encoder(result))
192+
return JSONResponse(
193+
status_code=status.HTTP_200_OK,
194+
content=jsonable_encoder(result),
195+
headers=headers,
196+
media_type=media_type,
197+
background=background,
198+
)
150199

151200
@classmethod
152201
def error(
@@ -156,6 +205,9 @@ def error(
156205
rows: Optional[Any] = None,
157206
dict_content: Optional[Dict] = None,
158207
model_content: Optional[BaseModel] = None,
208+
headers: Optional[Mapping[str, str]] = None,
209+
media_type: Optional[str] = None,
210+
background: Optional[BackgroundTask] = None,
159211
) -> Response:
160212
"""
161213
错误响应方法
@@ -165,6 +217,9 @@ def error(
165217
:param rows: 可选,错误响应结果中属性为rows的值
166218
:param dict_content: 可选,dict类型,错误响应结果中自定义属性的值
167219
:param model_content: 可选,BaseModel类型,错误响应结果中自定义属性的值
220+
:param headers: 可选,响应头信息
221+
:param media_type: 可选,响应结果媒体类型
222+
:param background: 可选,响应返回后执行的后台任务
168223
:return: 错误响应结果
169224
"""
170225
result = {'code': HttpStatusConstant.ERROR, 'msg': msg}
@@ -180,14 +235,32 @@ def error(
180235

181236
result.update({'success': False, 'time': datetime.now()})
182237

183-
return JSONResponse(status_code=status.HTTP_200_OK, content=jsonable_encoder(result))
238+
return JSONResponse(
239+
status_code=status.HTTP_200_OK,
240+
content=jsonable_encoder(result),
241+
headers=headers,
242+
media_type=media_type,
243+
background=background,
244+
)
184245

185246
@classmethod
186-
def streaming(cls, *, data: Any = None):
247+
def streaming(
248+
cls,
249+
*,
250+
data: Any = None,
251+
headers: Optional[Mapping[str, str]] = None,
252+
media_type: Optional[str] = None,
253+
background: Optional[BackgroundTask] = None,
254+
) -> Response:
187255
"""
188256
流式响应方法
189257
190258
:param data: 流式传输的内容
259+
:param headers: 可选,响应头信息
260+
:param media_type: 可选,响应结果媒体类型
261+
:param background: 可选,响应返回后执行的后台任务
191262
:return: 流式响应结果
192263
"""
193-
return StreamingResponse(status_code=status.HTTP_200_OK, content=data)
264+
return StreamingResponse(
265+
status_code=status.HTTP_200_OK, content=data, headers=headers, media_type=media_type, background=background
266+
)

0 commit comments

Comments
 (0)