2023-07-14 19:08:18 +00:00
---
description: Using server directory to create middlewares, plugins and API easily.
---
2023-07-15 15:41:04 +00:00
# Server Directory
2023-07-14 19:08:18 +00:00
2023-07-15 15:35:53 +00:00
Nuxt scans files under server directory to create middlewares, plugins and API routes to create features to use inside components or pages.
2023-07-14 19:08:18 +00:00
Each file under these folders must return a function defined with `defineEventHandler()` .
## Server Routes
Anything under `~/server/api` folder will create API routes to fetch data within API route.
```ts [server/api/hello.ts]
export default defineEventHandler(() => {
return {
greetings: 'traveler'
}
})
```
```vue [components/Greet.vue]
< script setup lang = "ts" >
const {data} = await useFetch('/api/hello')
< / script >
```
This server route will return a data object that contains an object with content of `{greetings: 'traveler'}` .
2023-07-15 15:41:04 +00:00
Server route file will automatically match with `GET` method and it can be changed by adding method names to file name such as: `.post` , `.put` , `.delete` .
2023-07-14 19:08:18 +00:00
Routes may accept parameters, body and query parameters to get some values.
:ReadMore{link="/docs/guide/directory-structure/server#matching-route-parameters"}
2023-07-15 15:35:53 +00:00
## Server Middleware
Nuxt will read anything under `~/server/middleware` folder and create middlewares for you to tweak request information.
```ts [server/middleware/log.ts]
export default defineEventHandler((event) => {
event.context.auth = { user: 123 }
})
```
:ReadMore{link="/docs/guide/directory-structure/server#server-middleware"}
## Server Plugins
Any files under `~/server/plugins` folder will be registered as Nitro Plugin for changing [Nitro ](https://nitro.unjs.io/ )'s behavior.
:ReadMore{link="/docs/guide/directory-structure/server#server-plugins"}