增加api/v2等后端api文件
This commit is contained in:
parent
2574028ad1
commit
06286401b7
47
apps/jingrow/jingrow/api/v2.py
Normal file
47
apps/jingrow/jingrow/api/v2.py
Normal file
@ -0,0 +1,47 @@
|
||||
# Copyright (c) 2025, JINGROW and contributors
|
||||
# For license information, please see license.txt
|
||||
|
||||
"""
|
||||
API v2 路由 - 转发到 SaaS 端
|
||||
"""
|
||||
|
||||
from fastapi import APIRouter, Request
|
||||
from fastapi.responses import JSONResponse
|
||||
import requests
|
||||
import logging
|
||||
from jingrow.config import Config
|
||||
from jingrow.utils.auth import get_request_session_cookie
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
router = APIRouter(prefix="/api/v2")
|
||||
|
||||
|
||||
def _forward_to_saas(endpoint: str, params: dict = None) -> dict:
|
||||
"""通用转发函数"""
|
||||
url = f"{Config.jingrow_server_url}/api/v2{endpoint}"
|
||||
headers = {"Accept": "application/json", "Content-Type": "application/json"}
|
||||
|
||||
session_cookie = get_request_session_cookie()
|
||||
if session_cookie:
|
||||
headers["Cookie"] = f"sid={session_cookie}"
|
||||
|
||||
resp = requests.get(url, headers=headers, params=params, timeout=30)
|
||||
if resp.status_code == 200:
|
||||
return resp.json()
|
||||
logger.error(f"[v2] SaaS error {endpoint}: {resp.status_code}")
|
||||
return {}
|
||||
|
||||
|
||||
@router.get("/pagetype/{pagetype}/meta")
|
||||
async def get_meta(pagetype: str):
|
||||
"""获取 PageType 元数据 - 转发到 SaaS 端"""
|
||||
result = _forward_to_saas(f"/pagetype/{pagetype}/meta")
|
||||
return JSONResponse(content=result)
|
||||
|
||||
|
||||
@router.get("/pagetype/{pagetype}/count")
|
||||
async def get_count(pagetype: str, request: Request):
|
||||
"""获取 PageType 计数 - 转发到 SaaS 端"""
|
||||
params = dict(request.query_params)
|
||||
result = _forward_to_saas(f"/pagetype/{pagetype}/count", params)
|
||||
return JSONResponse(content=result)
|
||||
Loading…
x
Reference in New Issue
Block a user