33from fastapi .encoders import jsonable_encoder
44from fastapi .responses import JSONResponse , Response , StreamingResponse
55from pydantic import BaseModel
6- from typing import Any , Dict , Optional
6+ from starlette .background import BackgroundTask
7+ from typing import Any , Dict , Mapping , Optional
78from 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