From 6d148e47f1802b04ad812b826adef92f31be9d0e Mon Sep 17 00:00:00 2001 From: xion Date: Mon, 12 May 2025 04:32:26 +0800 Subject: [PATCH] add parse search value --- package.json | 2 +- src/browser.ts | 2 ++ src/route.ts | 3 +++ src/server/parse-body.ts | 17 +++++++++++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index adf58a8..764fd56 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package", "name": "@kevisual/router", - "version": "0.0.13", + "version": "0.0.14", "description": "", "type": "module", "main": "./dist/router.js", diff --git a/src/browser.ts b/src/browser.ts index 042bdcb..ae34469 100644 --- a/src/browser.ts +++ b/src/browser.ts @@ -7,3 +7,5 @@ export type { RouteContext, RouteOpts } from './route.ts'; export type { Run } from './route.ts'; export { CustomError } from './result/error.ts'; + +export * from './server/parse-body.ts'; diff --git a/src/route.ts b/src/route.ts index bc7973a..dde3265 100644 --- a/src/route.ts +++ b/src/route.ts @@ -592,6 +592,9 @@ export class QueryRouter { return pick(r, pickValue as any); }); } + /** + * 获取handle函数, 这里会去执行parse函数 + */ getHandle(router: QueryRouter, wrapperFn?: HandleFn, ctx?: RouteContext) { return async (msg: { path: string; key?: string; [key: string]: any }, handleContext?: RouteContext) => { try { diff --git a/src/server/parse-body.ts b/src/server/parse-body.ts index 7d54708..ffa990c 100644 --- a/src/server/parse-body.ts +++ b/src/server/parse-body.ts @@ -22,3 +22,20 @@ export const parseSearch = (req: IncomingMessage) => { const parsedUrl = url.parse(req.url, true); return parsedUrl.query; }; + +/** + * 把url当个key 的 value 的字符串转成json + * @param value + */ +export const parseSearchValue = (value?: string, opts?: { decode?: boolean }) => { + if (!value) return {}; + const decode = opts?.decode ?? false; + if (decode) { + value = decodeURIComponent(value); + } + try { + return JSON.parse(value); + } catch (e) { + return {}; + } +};