0.0.2 • Published 2 years ago
gewu-request v0.0.2
gewu-request
定义接口描述和校验
import { gewuRequest } from "gewu-request";
import { yup } from "yup";
interface Hello {
name: string;
age: number;
}
interface HelloResp {
name: string;
age: number;
vip: string;
}
// 描述了请求体类型、响应类型、url、校验
export const api_hello = gewuRequest.api<Hello, HelloResp>({
url: "/v1/hello",
method: "POST",
requestSchema: yup.object({
name: yup.string().required("需要提供name"),
age: yup.number().required("需要提供age").min(3),
}),
responseSchema: yup.object({
name: yup.string().required("需要返回name"),
age: yup.number().required("需要返回age"),
vip: yup.string().required("需要返回vip"),
}),
});
前端发起请求
import { gewuRequest } from "gewu-request";
import { api_hello } from "dto/hello";
const app = fastify();
// 会根据 api_hello 的描述绑定路由、解析 query或body,校验入参,如果都通过了,执行第三个参数并且返回
gewuRequest.use(app, api_hello, async (body) => {
return { ...body, vip: "Supper" };
});
gewuRequest.listen({ port: 5000 });