The request URL or Request object
Optionaloptions: RequestInitOptional request configuration
A promise that resolves to a unique hash string
// With URL string
const hash1 = await generateRequestHash("https://api.example.com/data", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ name: "test" })
});
// With Request object
const request = new Request("https://api.example.com/data", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ name: "test" })
});
const hash2 = await generateRequestHash(request);
export async function generateRequestHash(
input: RequestInfo | URL,
options?: RequestInit,
): Promise<string> {
const url = input instanceof Request ? input.url : input.toString();
const method = input instanceof Request ? input.method : options?.method || "GET";
const headers = input instanceof Request ? input.headers : options?.headers || {};
const body = input instanceof Request ? input.body : options?.body || "";
const contentType =
input instanceof Request
? input.headers.get("content-type") || ""
: (headers instanceof Headers ? headers.get("content-type") : (headers as Record<string, string>)?.["content-type"]) ?? "";
const data = {
url,
method,
headers,
body,
contentType,
};
const dataString = JSON.stringify(data);
return generateSimpleHash(dataString);
}
Generates a unique hash for a request based on its URL, method, headers, and body. This hash can be used to identify and track unique requests.