Skip to content

Commit 87591c6

Browse files
committed
🎈 Perf(optimized code): 优化代码
1 parent 3815465 commit 87591c6

File tree

3 files changed

+39
-46
lines changed

3 files changed

+39
-46
lines changed

backend/plugin/api_testing/api/v1/request.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"""
44
接口请求API
55
"""
6-
from typing import Any, Dict
76
from fastapi import APIRouter
87
from backend.plugin.api_testing.schema.request import ApiRequestSchema, ApiResponseSchema
98
from backend.plugin.api_testing.utils.http_client import send_request
@@ -27,7 +26,7 @@ async def send_api_request(request_data: ApiRequestSchema) -> ResponseModel | Re
2726
try:
2827
with open(file_path, "rb") as file:
2928
files[field_name] = (file_path.split("/")[-1], file.read())
30-
except Exception as error:
29+
except Exception:
3130
return response_base.fail()
3231

3332
# 处理认证信息
@@ -64,6 +63,5 @@ async def send_api_request(request_data: ApiRequestSchema) -> ResponseModel | Re
6463
)
6564

6665
return response_base.success(data=response_data.model_dump())
67-
except Exception as error:
68-
# self._handle_exception(error)
66+
except Exception:
6967
return response_base.fail()

backend/plugin/api_testing/schema/request.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@
33
"""
44
请求相关模型
55
"""
6-
from typing import Any, Dict, List, Optional, Union
7-
6+
from typing import Any, Dict, List, Optional
87
from pydantic import BaseModel, Field
9-
108
from backend.plugin.api_testing.utils.http_client import RequestOptions
119

1210

@@ -100,4 +98,4 @@ class TestStepResponse(BaseModel):
10098
order: int
10199
status: int
102100
create_time: str
103-
update_time: str
101+
update_time: str

backend/plugin/api_testing/utils/http_client.py

Lines changed: 35 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,9 @@
44
接口请求客户端
55
基于httpx实现HTTP请求功能
66
"""
7-
import json
87
import time
9-
from typing import Any, Dict, List, Optional, Union
10-
118
import httpx
12-
from fastapi import HTTPException
9+
from typing import Any, Dict, Optional
1310
from pydantic import BaseModel
1411

1512

@@ -39,27 +36,27 @@ class RequestResult(BaseModel):
3936

4037
class HttpClient:
4138
"""HTTP客户端"""
42-
39+
4340
def __init__(self, options: RequestOptions = None):
4441
"""
4542
初始化HTTP客户端
4643
4744
:param options: 请求选项
4845
"""
4946
self.options = options or RequestOptions()
50-
47+
5148
async def request(
52-
self,
53-
method: str,
54-
url: str,
55-
params: Dict[str, Any] = None,
56-
headers: Dict[str, str] = None,
57-
cookies: Dict[str, str] = None,
58-
data: Dict[str, Any] = None,
59-
json_data: Dict[str, Any] = None,
60-
files: Dict[str, Any] = None,
61-
auth: tuple = None,
62-
options: RequestOptions = None
49+
self,
50+
method: str,
51+
url: str,
52+
params: Dict[str, Any] = None,
53+
headers: Dict[str, str] = None,
54+
cookies: Dict[str, str] = None,
55+
data: Dict[str, Any] = None,
56+
json_data: Dict[str, Any] = None,
57+
files: Dict[str, Any] = None,
58+
auth: tuple = None,
59+
options: RequestOptions = None
6360
) -> RequestResult:
6461
"""
6562
发送HTTP请求
@@ -77,15 +74,15 @@ async def request(
7774
:return: 请求结果
7875
"""
7976
opts = options or self.options
80-
77+
8178
# 准备客户端参数
8279
client_kwargs = {
8380
"timeout": opts.timeout,
8481
"verify": opts.verify_ssl,
8582
"follow_redirects": opts.follow_redirects,
8683
"max_redirects": opts.max_redirects
8784
}
88-
85+
8986
# 准备请求参数
9087
request_kwargs = {
9188
"method": method,
@@ -98,15 +95,15 @@ async def request(
9895
"files": files,
9996
"auth": auth
10097
}
101-
98+
10299
# 过滤None值
103100
request_kwargs = {k: v for k, v in request_kwargs.items() if v is not None}
104-
101+
105102
start_time = time.time()
106103
error = None
107104
response = None
108105
retry_count = 0
109-
106+
110107
# 支持请求重试
111108
while retry_count <= opts.retry_count:
112109
try:
@@ -121,9 +118,9 @@ async def request(
121118
time.sleep(opts.retry_interval)
122119
else:
123120
break
124-
121+
125122
elapsed_time = (time.time() - start_time) * 1000 # 转换为毫秒
126-
123+
127124
if response is None:
128125
# 请求失败,返回错误信息
129126
return RequestResult(
@@ -137,15 +134,15 @@ async def request(
137134
text="",
138135
error=error
139136
)
140-
137+
141138
# 尝试解析JSON
142139
json_result = None
143140
try:
144141
if response.headers.get('content-type', '').startswith('application/json'):
145142
json_result = response.json()
146143
except Exception:
147144
pass
148-
145+
149146
# 构建结果
150147
result = RequestResult(
151148
url=str(response.url),
@@ -158,7 +155,7 @@ async def request(
158155
text=response.text,
159156
json_data=json_result
160157
)
161-
158+
162159
return result
163160

164161

@@ -167,16 +164,16 @@ async def request(
167164

168165

169166
async def send_request(
170-
method: str,
171-
url: str,
172-
params: Dict[str, Any] = None,
173-
headers: Dict[str, str] = None,
174-
cookies: Dict[str, str] = None,
175-
data: Dict[str, Any] = None,
176-
json_data: Dict[str, Any] = None,
177-
files: Dict[str, Any] = None,
178-
auth: tuple = None,
179-
options: RequestOptions = None
167+
method: str,
168+
url: str,
169+
params: Dict[str, Any] = None,
170+
headers: Dict[str, str] = None,
171+
cookies: Dict[str, str] = None,
172+
data: Dict[str, Any] = None,
173+
json_data: Dict[str, Any] = None,
174+
files: Dict[str, Any] = None,
175+
auth: tuple = None,
176+
options: RequestOptions = None
180177
) -> RequestResult:
181178
"""
182179
使用默认客户端发送请求的辅助函数
@@ -204,4 +201,4 @@ async def send_request(
204201
files=files,
205202
auth=auth,
206203
options=options
207-
)
204+
)

0 commit comments

Comments
 (0)