refactor: 提取 validation.ts 和 amap.ts,统一 API 路由校验逻辑

新增 validation.ts(用户名/密码/邮箱/内容/房间名/必填字段校验)
和 amap.ts(AMAP API key 校验),消除 7 个路由中的重复验证代码。
This commit is contained in:
2026-02-26 19:22:17 +08:00
parent 455b9e04d8
commit 1229bb849b
9 changed files with 80 additions and 41 deletions
+2 -2
View File
@@ -1,5 +1,6 @@
import { NextResponse } from "next/server";
import { apiHandler, ApiError } from "@/lib/api";
import { requireAmapApiKey } from "@/lib/amap";
export const GET = apiHandler(async (req) => {
const lat = req.nextUrl.searchParams.get("lat");
@@ -7,8 +8,7 @@ export const GET = apiHandler(async (req) => {
if (!lat || !lng) throw new ApiError("lat and lng are required");
const apiKey = process.env.AMAP_API_KEY;
if (!apiKey) throw new ApiError("AMAP_API_KEY not configured", 500);
const apiKey = requireAmapApiKey();
const url = new URL("https://restapi.amap.com/v3/geocode/regeo");
url.searchParams.set("key", apiKey);
+3 -3
View File
@@ -1,12 +1,12 @@
import { NextResponse } from "next/server";
import { apiHandler, ApiError } from "@/lib/api";
import { apiHandler } from "@/lib/api";
import { requireAmapApiKey } from "@/lib/amap";
export const GET = apiHandler(async (req) => {
const keywords = req.nextUrl.searchParams.get("keywords")?.trim();
if (!keywords) return NextResponse.json([]);
const apiKey = process.env.AMAP_API_KEY;
if (!apiKey) throw new ApiError("AMAP_API_KEY not configured", 500);
const apiKey = requireAmapApiKey();
const url = new URL("https://restapi.amap.com/v3/assistant/inputtips");
url.searchParams.set("key", apiKey);