Developers
Code-first integration patterns with HTML, Fetch, React, and Next.js
integration
developers
javascript
react
nextjs
html
fetch
Developers
Code-first integration patterns with HTML, Fetch, React, and Next.js.
HTML (form-encoded)
<form action="https://api.formfeeder.io/v1/form/abcd1234" method="POST">
<input type="text" name="name" required />
<input type="email" name="email" required />
<button type="submit">Send</button>
</form>
HTML (multipart/form-data with files)
<form action="https://api.formfeeder.io/v1/form/abcd1234" method="POST" enctype="multipart/form-data">
<input type="text" name="name" required />
<input type="file" name="attachment" accept=".png,.jpg,.pdf" />
<button type="submit">Send</button>
</form>
Fetch (JSON)
await fetch("https://api.formfeeder.io/v1/form/abcd1234", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ name: "Ada", email: "[email protected]" })
});
React
function ContactForm() {
const onSubmit = async (e) => {
e.preventDefault();
const fd = new FormData(e.currentTarget);
const res = await fetch("https://api.formfeeder.io/v1/form/abcd1234", { method: "POST", body: fd });
const data = await res.json();
console.log(data);
};
return (
<form onSubmit={onSubmit}>
<input name="name" required />
<input type="email" name="email" required />
<button type="submit">Send</button>
</form>
);
}
Next.js (app router)
// app/api/submit/route.ts
export async function POST(req: Request) {
const formData = await req.formData();
const ffRes = await fetch("https://api.formfeeder.io/v1/form/abcd1234", { method: "POST", body: formData });
return new Response(await ffRes.text(), { status: ffRes.status });
}