EN
Nuxt 3 - send form data using POST method and receive response
0 points
In this article, we would like to show you how to send form data using POST method and receive response in Nuxt 3.
1. On frontend side, we create a simple form with textarea
element which receives some text that we want to send to the server.
The textarea
element uses v-model
directive to bind data to form.text
value returned from the element. The form.text
can be later send as body.data
using useFetch()
method.
pages/index.vue
file:
xxxxxxxxxx
1
<template>
2
<form>
3
<textarea placeholder='Type something...' v-model="form.text" spellcheck="false"></textarea>
4
<button type="button" @click="handleSubmit">Send data</button>
5
</form>
6
</template>
7
8
<script>
9
export default {
10
name: 'Home',
11
data() {
12
return {
13
form: {
14
text: ''
15
}
16
}
17
},
18
methods: {
19
async handleSubmit() {
20
const { data: response } = await useFetch('/api/text', {
21
method: 'post',
22
body: {
23
data: this.form.text
24
}
25
})
26
27
if (response) {
28
alert(response.value);
29
}
30
}
31
}
32
}
33
</script>
34
35
<style scoped>
36
/* ... */
37
</style>
2. On backend side, the server receives event
object, destructures the data
using readBody()
method and returns some string (which we later display using alert()
on frontend side).
server/api/text.js
file:
xxxxxxxxxx
1
export default defineEventHandler(async (event) => {
2
const { data } = await readBody(event);
3
return `Data from api: ${data}`;
4
});