api.py 改用显式 @app.get 装饰器注册全部接口
- 移除 _simple_endpoint 程序化注册, 13 个接口改为显式装饰器 - 保留 _split_codes 公共参数解析 - blueprint 施工规范同步: 接口暴露一律使用显式 @app.get
This commit is contained in:
+1
-1
@@ -144,7 +144,7 @@ EMWebApi/
|
||||
3. **共享**:`from utils.fin_summary import HEADERS, TIMEOUT`,不重复定义;不同 base_url 的接口在本文件内定义新常量;emws 跳转接口用 `_emchoice.get_data_url`,datacenter 报表用 `_emchoice.fetch_report`
|
||||
4. **数据流**:内部统一 `pandas.DataFrame`,每行冗余 `SECUCODE` 列便于多股票合并
|
||||
5. **校验**:`fetch_report` 中 `success=False` 且 message 为"返回数据为空/暂无数据/无数据"时按空结果处理(返回空列表),其余失败抛 `RuntimeError`;空数据返回空 DataFrame 而非报错
|
||||
6. **接口暴露**:api.py 中新增 `GET /fin/<主题>`,参数用 FastAPI `Query`,返回 `{success, count, columns, data, errors}` 风格,NaN/NaT/inf 转 None(复用 `_df_to_json_payload`),无数据统一走 `_empty_response`;仅 `stocks`(+`years`) 参数的接口可用 `_simple_endpoint` 统一生成
|
||||
6. **接口暴露**:api.py 中每个接口必须用显式 `@app.get` 装饰器 + `Query` 参数(不使用程序化注册),返回 `{success, count, columns, data, errors}` 风格,NaN/NaT/inf 转 None(复用 `_df_to_json_payload`),无数据统一走 `_empty_response`;纯 `stocks` 参数用 `_split_codes` 解析
|
||||
7. **礼貌抓取**:批量循环中加随机延时(参考 `SLEEP_RANGE`)
|
||||
8. **注释语言**:中文,解释"为什么"(如接口编码映射差异)
|
||||
9. **测试**:新模块在 `tests/test_interfaces.py` 注册冒烟用例(连真实接口取 1 年数据,断言非空 + 关键列)
|
||||
|
||||
Reference in New Issue
Block a user