diff --git a/src/api/GetTest.ts b/src/api/GetTest.ts index 79d86fd..0898b2c 100644 --- a/src/api/GetTest.ts +++ b/src/api/GetTest.ts @@ -1,4 +1,4 @@ -import { API } from "@lib/API/API"; +import { API, RequestData } from "@lib/API/API"; import MountIP, { MountIPRequestData } from "@lib/APIMiddleware/MountIP"; import MountUserAgent, { MountUserAgentRequestDate } from "@lib/APIMiddleware/MountUserAgent"; import Unbind from "@lib/APIMiddleware/Unbind"; @@ -10,7 +10,7 @@ class GetTest extends API { super('GET', '/test', MountIP, MountUserAgent, Unbind); } - public async onRequset(data: MountIPRequestData | MountUserAgentRequestDate, res: Response): Promise { + public async onRequset(data: MountIPRequestData & MountUserAgentRequestDate, res: Response): Promise { this.logger.info(`request ip: ${data._ip} useragent: ${data._userAgent}`) res.json(ServerStdResponse.OK); } diff --git a/src/lib/API/API.ts b/src/lib/API/API.ts index 312d9b6..c56acbd 100644 --- a/src/lib/API/API.ts +++ b/src/lib/API/API.ts @@ -5,6 +5,10 @@ interface MiddlewareFunction { (req: Request, res: Response, next: NextFunction): void; } +interface RequestData { + [key: string]: any +} + abstract class API { protected logger: Logger; @@ -21,8 +25,8 @@ abstract class API { } // to override - public abstract onRequset(data: any, res: Response): Promise; + public abstract onRequset(data: RequestData, res: Response): Promise; } export { API }; -export type { MiddlewareFunction }; \ No newline at end of file +export type { MiddlewareFunction, RequestData }; \ No newline at end of file diff --git a/src/lib/APIMiddleware/MountIP.ts b/src/lib/APIMiddleware/MountIP.ts index 7b1c815..e4beb1d 100644 --- a/src/lib/APIMiddleware/MountIP.ts +++ b/src/lib/APIMiddleware/MountIP.ts @@ -1,5 +1,6 @@ import { Request, Response, NextFunction } from "express" import Logger from "@lib/Logger/Logger"; +import { RequestData } from "@lib/API/API"; const logger = new Logger('API', 'Middleware', 'MountIP'); // 挂载IP,将请求的ip地址挂载到data._ip属性下 @@ -20,9 +21,8 @@ let MountIP = (req: Request, res: Response, next: NextFunction) => { export default MountIP; -interface MountIPRequestData { - _ip: string, - [key: string | number | symbol]: any -} +interface MountIPRequestData extends RequestData { + _ip: string; +} export type { MountIPRequestData }; \ No newline at end of file diff --git a/src/lib/APIMiddleware/MountUserAgent.ts b/src/lib/APIMiddleware/MountUserAgent.ts index f4d3098..0b37747 100644 --- a/src/lib/APIMiddleware/MountUserAgent.ts +++ b/src/lib/APIMiddleware/MountUserAgent.ts @@ -1,5 +1,6 @@ import { Request, Response, NextFunction } from "express" import Logger from "@lib/Logger/Logger"; +import { RequestData } from "@lib/API/API"; const logger = new Logger('API', 'Middleware', 'MountUserAgent') // 挂载用户代理,将请求的请求代理挂载到data._userAgent属性下 @@ -12,9 +13,8 @@ let MountUserAgent = (req: Request, res: Response, next: NextFunction) => { export default MountUserAgent; -interface MountUserAgentRequestDate { +interface MountUserAgentRequestDate extends RequestData { _userAgent: string, - [key: string | number | symbol]: any } export type { MountUserAgentRequestDate }; \ No newline at end of file