import { FormData } from "../adapter"; import { URLSearchParams } from "../adapter"; import { setFormData, setSingleTypeObject } from "../singleTypeObject"; import { BodyTypes } from "../type/BodyTypes"; /* 接收类型对象并转化为 Request 的正常对象的方式 */ export const bodyTransform = ( body: BodyTypes | null, headers: Headers ): BodyInit | null => { if (!body) return null; switch (body.type) { case "form": if (!(body.data instanceof FormData)) { return setFormData(new FormData(), body.data); } /** 穿透 */ case "json": headers.set("Content-Type", "application/json"); return JSON.stringify(body.data); case "urlencoded": if (!(body.data instanceof URLSearchParams)) { return setSingleTypeObject(new URLSearchParams(), body.data); } /** 穿透 */ default: return body.data as BodyInit; } };