Read POST
Serve an HTML form, then read POST requests. Use also to read JSON or POST data from an incoming request.
export default {async fetch(request) {/*** rawHtmlResponse returns HTML inputted directly* into the worker script* @param {string} html*/function rawHtmlResponse(html) {return new Response(html, {headers: {"content-type": "text/html;charset=UTF-8",},});}/*** readRequestBody reads in the incoming request body* Use await readRequestBody(..) in an async function to get the string* @param {Request} request the incoming request to read from*/async function readRequestBody(request) {const contentType = request.headers.get("content-type");if (contentType.includes("application/json")) {return JSON.stringify(await request.json());} else if (contentType.includes("application/text")) {return request.text();} else if (contentType.includes("text/html")) {return request.text();} else if (contentType.includes("form")) {const formData = await request.formData();const body = {};for (const entry of formData.entries()) {body[entry[0]] = entry[1];}return JSON.stringify(body);} else {// Perhaps some other type of data was submitted in the form// like an image, or some other binary data.return "a file";}}const { url } = request;if (url.includes("form")) {return rawHtmlResponse(someForm);}if (request.method === "POST") {const reqBody = await readRequestBody(request);const retBody = `The request body sent in was ${reqBody}`;return new Response(retBody);} else if (request.method === "GET") {return new Response("The request was a GET");}},};
const handler: ExportedHandler = {async fetch(request: Request) {/*** rawHtmlResponse returns HTML inputted directly* into the worker script* @param {string} html*/function rawHtmlResponse(html) {return new Response(html, {headers: {"content-type": "text/html;charset=UTF-8",},});}/*** readRequestBody reads in the incoming request body* Use await readRequestBody(..) in an async function to get the string* @param {Request} request the incoming request to read from*/async function readRequestBody(request: Request) {const contentType = request.headers.get("content-type");if (contentType.includes("application/json")) {return JSON.stringify(await request.json());} else if (contentType.includes("application/text")) {return request.text();} else if (contentType.includes("text/html")) {return request.text();} else if (contentType.includes("form")) {const formData = await request.formData();const body = {};for (const entry of formData.entries()) {body[entry[0]] = entry[1];}return JSON.stringify(body);} else {// Perhaps some other type of data was submitted in the form// like an image, or some other binary data.return "a file";}}const { url } = request;if (url.includes("form")) {return rawHtmlResponse(someForm);}if (request.method === "POST") {const reqBody = await readRequestBody(request);const retBody = `The request body sent in was ${reqBody}`;return new Response(retBody);} else if (request.method === "GET") {return new Response("The request was a GET");}},};export default handler;