Guide
Fetch
Nitro provides a built-in fetch API that can be used to get data from server endpoints or from other sources. It's built on top of the unjs/ofetch.
Usage
In your handler, you've just to call the $fetch
function to make a request. The response will be automatically parsed.
Router Handler
export default defineEventHandler(async (event) => {
const data = await $fetch('https://ungh.cc/orgs/unjs/repos')
return data
})
You can pass a generic type to the $fetch
function to get a better type inference.
Router Handler
import { Repo } from '~/types'
export default defineEventHandler(async (event) => {
const data = await $fetch<Repo[]>('https://ungh.cc/orgs/unjs/repos')
return data
})
You can pass many options to the $fetch
function like the method, headers, body, query, etc.
Router Handler
import { Repo } from '~/types'
export default defineEventHandler(async (event) => {
const data = await $fetch<Repo[]>('https://api.github.com/markdown', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: {
text: 'Hello **world**!'
}
})
return data
})
See more about the usage of the $fetch
function in the unjs/ofetch documentation.
In-Server fetch
You can also use the $fetch
function to make internal requests to other handlers.
Router Handler
export default defineEventHandler(async (event) => {
const data = await $fetch('/api/users')
return data
})
In reality, no fetch request is made and the handler is directly called thanks to unjs/unenv. This is useful to avoid making HTTP request overhead.