Vue
Um single-file component Vue que envia para o Ikiform, mais uma server route do Nuxt com uma chave secreta.
O Vue envia do navegador com o SDK ou fetch. Nenhum plugin ou etapa de build é necessário além da sua configuração habitual.
Instale o SDK
npm install @ikiform/sdkUm single-file component
<script setup>
import { submit } from "@ikiform/sdk";
import { ref } from "vue";
const status = ref("idle");
const errors = ref({});
const message = ref("");
async function onSubmit(event) {
status.value = "sending";
const result = await submit("frm_xxxxxxxxxxxxxxxx", new FormData(event.target));
if (result.ok) {
status.value = "sent";
return;
}
errors.value = result.error.fields ?? {};
message.value = result.error.message;
status.value = "error";
}
</script>
<template>
<p v-if="status === 'sent'">Thanks, we got it.</p>
<form v-else @submit.prevent="onSubmit">
<label>
Email
<input name="email" type="email" required />
</label>
<p v-if="errors.email">{{ errors.email[0] }}</p>
<label>
Message
<textarea name="message"></textarea>
</label>
<input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden />
<p v-if="status === 'error' && !errors.email" role="alert">{{ message }}</p>
<button :disabled="status === 'sending'">Send</button>
</form>
</template>Para formulários com a verificação humana Ikiform, chame challenge(formId) antes de submit e passe o token como { turnstileToken }, como no guia de React.
Server route do Nuxt
Para enviar a partir do servidor, adicione uma server route que repassa o corpo com uma chave secreta. A página então envia JSON para a sua própria rota. Para um componente que envia direto do navegador, com fallback antes da hidratação, veja Nuxt.
export default defineEventHandler(async (event) => {
const body = await readBody(event);
return $fetch("https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.IKIFORM_SECRET_KEY}` },
body,
ignoreResponseError: true,
});
});Envios feitos pelo seu servidor vêm todos do endereço IP do seu servidor, então os limites de taxa por visitante do Ikiform contam todos os visitantes juntos. O preset Standard permite 5 envios por minuto por IP e formulário, o que um site movimentado pode atingir. Envie do navegador quando puder, ou escolha o limite de taxa Relaxed ou Custom para formulários que passam por um servidor.