api.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from models import *
  2. import requests
  3. import json
  4. from logger import logger
  5. from serial.tools import list_ports
  6. from utils.hlm_http_request import forward_request
  7. from sockets.socket_client import socket_manager
  8. @app.get("/")
  9. async def index():
  10. await socket_manager.send_message(msg="测试")
  11. return {"message": "Hello World"}
  12. @app.get("/scan_serials", description="扫描可用的设备端口")
  13. async def scanSerials():
  14. """扫描串口"""
  15. ports = list_ports.comports()
  16. print("Scanning", ports)
  17. return {"message": "Hello World"}
  18. @app.api_route(
  19. "/forward_request", methods=["GET", "POST"], description="代理转发hlm项目得请求"
  20. )
  21. async def forwardRequest(request: HlmForwardRequest):
  22. """
  23. 转发HTTP请求到目标URL
  24. :param request: FastAPI Request对象
  25. :return: 目标接口的响应
  26. """
  27. try:
  28. if request.method == "GET":
  29. params = request.query_params
  30. elif request.method == "POST":
  31. params = json.dump(request.query_params)
  32. else:
  33. raise UnicornException("仅支持GET和POST方法")
  34. target_url = request.target_url
  35. method = request.method.upper()
  36. headers = request.headers
  37. if not target_url:
  38. raise UnicornException("目标url地址不能为空")
  39. # 调用 hlm_http_request 中的 forward_request 函数
  40. response = forward_request(
  41. target_url, params=params, method=method, headers=headers
  42. )
  43. return response
  44. except requests.RequestException as e:
  45. raise UnicornException(e)
  46. except Exception as e:
  47. raise UnicornException(e)