面试题答案
一键面试在SvelteKit的API路由中,可以通过导出不同的函数来处理不同的HTTP方法。以下是具体的代码示例:
// src/routes/api/someEndpoint/+server.js
import { validateGetData, validatePostData, validateDeleteData } from '$lib/validation';
// 处理GET请求
export async function GET({ url }) {
const query = url.searchParams;
const validationResult = validateGetData(query);
if (!validationResult.valid) {
return new Response('Invalid GET data', { status: 400 });
}
// 处理GET请求逻辑,例如从数据库获取数据
const data = await someGetDataFunction();
return new Response(JSON.stringify(data), {
headers: { 'Content-Type': 'application/json' }
});
}
// 处理POST请求
export async function POST({ request }) {
const body = await request.json();
const validationResult = validatePostData(body);
if (!validationResult.valid) {
return new Response('Invalid POST data', { status: 400 });
}
// 处理POST请求逻辑,例如将数据保存到数据库
await somePostDataFunction(body);
return new Response('Data saved successfully', { status: 201 });
}
// 处理DELETE请求
export async function DELETE({ request }) {
const body = await request.json();
const validationResult = validateDeleteData(body);
if (!validationResult.valid) {
return new Response('Invalid DELETE data', { status: 400 });
}
// 处理DELETE请求逻辑,例如从数据库删除数据
await someDeleteDataFunction(body);
return new Response('Data deleted successfully', { status: 200 });
}
数据处理和验证说明
-
GET请求:
- 通过
url.searchParams
获取查询参数。 - 使用
validateGetData
函数验证数据,该函数可以使用如zod
、joi
等库来进行数据验证。如果验证失败,返回400状态码。 - 如果验证通过,执行获取数据的逻辑,并将数据以JSON格式返回。
- 通过
-
POST请求:
- 通过
request.json()
获取请求体数据。 - 使用
validatePostData
函数验证数据。验证失败返回400状态码。 - 验证通过后,执行保存数据到数据库等逻辑,并返回201状态码表示创建成功。
- 通过
-
DELETE请求:
- 同样通过
request.json()
获取请求体数据。 - 使用
validateDeleteData
函数验证数据,失败返回400状态码。 - 验证通过后,执行从数据库删除数据等逻辑,并返回200状态码表示删除成功。
- 同样通过
在上述代码中,validateGetData
、validatePostData
和validateDeleteData
函数是自定义的数据验证函数,具体实现可以根据业务需求使用不同的验证库和规则。例如使用zod
库验证POST数据:
// $lib/validation.js
import { z } from 'zod';
const postDataSchema = z.object({
someField: z.string().min(1),
anotherField: z.number().positive()
});
export function validatePostData(data) {
return postDataSchema.safeParse(data);
}
上述代码定义了一个postDataSchema
来验证POST请求体数据,safeParse
方法会返回验证结果,包括是否验证成功以及解析后的数据(如果成功)。