# Route Handlers & Status Codes — Fastify

Source: https://www.geekswithgeeks.com/en/fastify/ff-handlers

> Write effective handlers and control HTTP response codes.

## Async handlers return data

Fastify handlers are async functions. Return an object and Fastify auto-serializes it to JSON and sends 200 OK.

## Custom status codes

Use `reply.code()` or `reply.status()` to set a custom HTTP status before sending.

```javascript
fastify.post('/items', async (req, reply) => {
  const item = { id: 1, name: 'Widget' };
  return reply.code(201).send(item);
});

fastify.get('/missing', async (req, reply) => {
  return reply.code(404).send({ error: 'Not found' });
});

fastify.delete('/items/:id', async (req, reply) => {
  return reply.code(204).send();
});
```

## Handler options (schema, auth, etc.)

Fastify routes accept an optional third argument with metadata—schema for validation, auth for permission checks.
