import { Middleware } from 'koa'; import { Config } from 'find-my-way'; import { HTTPMethod, HTTPVersion } from './find-my-way.js'; import { Server } from 'node:http'; import { LoaderFromOptions } from './loader.js'; export type HttpProps = { port: number; keys?: string[]; } & Omit, 'defaultRoute'>; /** * Http 服务类 * @description - 提供 HTTP 服务的基本功能 * @example * const http = new Http({ * port: 3000, * ignoreDuplicateSlashes: true, * ignoreTrailingSlash: true, * maxParamLength: +Infinity, * allowUnsafeRegex: true, * caseSensitive: true, * }); * http.use(async (ctx, next) => { * await next(); * }); * http.use(async (ctx, next) => { * await next(); * }); * http.use(async (ctx, next) => { * await next(); * }); * await http.listen((server) => { * console.log('Server is running on port 3000'); * }); * console.log('Server is running on port 3000'); */ export declare class Http { private readonly props; private readonly koa; private readonly loader; private readonly router; private server?; constructor(props: HttpProps); /** * 获取服务端口 * @returns - 服务端口 */ get port(): number; /** * 启动服务前注册中间件 * @param middleware - 中间件函数 * @returns - 当前实例 */ use(middleware: Middleware): this; /** * 启动服务 * @param onListen - 启动服务后回调函数,可选,回调函数返回值为关闭服务回调函数 * @returns - 关闭服务回调函数 */ listen(onListen?: (server: Server) => void | Promise): Promise<() => void>; /** * 注册 GET 请求路由 * @param url - 请求路径 * @param middlewares - 中间件函数 * @returns - 注销路由回调函数 */ get(url: string, ...middlewares: Middleware[]): () => void; /** * 注册 POST 请求路由 * @param url - 请求路径 * @param middlewares - 中间件函数 * @returns - 注销路由回调函数 */ post(url: string, ...middlewares: Middleware[]): () => void; /** * 注册 PUT 请求路由 * @param url - 请求路径 * @param middlewares - 中间件函数 * @returns - 注销路由回调函数 */ put(url: string, ...middlewares: Middleware[]): () => void; /** * 注册 DELETE 请求路由 * @param url - 请求路径 * @param middlewares - 中间件函数 * @returns - 注销路由回调函数 */ delete(url: string, ...middlewares: Middleware[]): () => void; /** * 注册 TRACE 请求路由 * @param url - 请求路径 * @param middlewares - 中间件函数 * @returns - 注销路由回调函数 */ trace(url: string, ...middlewares: Middleware[]): () => void; /** * 注册 PATCH 请求路由 * @param url - 请求路径 * @param middlewares - 中间件函数 * @returns - 注销路由回调函数 */ patch(url: string, ...middlewares: Middleware[]): () => void; /** * 注册路由 * @param method 请求方法 * @param url 请求路径 * @param middlewares 中间件 * @returns 注销路由回调函数 */ route(method: HTTPMethod, url: string, ...middlewares: Middleware[]): () => void; /** * 绑定文件夹下的所有路由 * @param directory 文件夹路径 * @param options 选项 * @returns 注销回调 */ load(directory: string, options?: LoaderFromOptions): Promise<() => void>; }