A middleware is a function that “hooks” into the routing process, performing any kind of operation.
You can hook into a Request before it’s processed, or a Response before it’s sent.
We have a lot of built-in middleware, and you can plug your own, or reuse any middleware released by the community.
I won’t go into creating your own, but it’s nice to see a couple examples of what middleware can do.
Logger
Simplest example: a logger.
import { logger } from 'hono/logger'
//...
app.use('*', logger())
This will print a log of all the server activity to the console:
Basic authentication
You can password protect a set of routes:
import { basicAuth } from 'hono/basic-auth'
//...
app.use('/dashboard', basicAuth({
username: 'test',
password: 'test'
}))
app.get('/dashboard', (c) => {
return c.text('Logged in')
})
You’ll see the page only if you add the correct credentials, otherwise you’ll see a “401 Unauthorized” message.
Implement CORS
import { cors } from 'hono/cors'
//...
app.use('/api/*', cors())
(you can use tons of options)
Set cache headers
import { cache } from 'hono/cache'
//...
app.get(
'*',
cache({
cacheName: 'my-app',
cacheControl: 'max-age=3600',
})
)
Set compression headers
import { compress } from 'hono/compress'
//...
app.use('*', compress())
… there’s a lot more, and you should check the official documentation.
Lessons in this unit:
0: | Introduction |
1: | Your first Hono app |
2: | The Request object |
3: | Send a response to the client |
4: | Manage cookies |
5: | Work with HTTP headers |
6: | Handling redirects |
7: | Routing |
8: | JSX templates |
9: | ▶︎ Middleware |
10: | Hono on Node.js |
11: | Handling forms COMING SOON |
Are you intimidated by Git? Can’t figure out
merge vs rebase? Are you afraid of screwing up
something any time you have to do something in
Git? Do you rely on ChatGPT or random people’s
answer on StackOverflow to fix your problems?
Your coworkers are tired of explaining Git to
you all the time? Git is something we all need
to use, but few of us really master it. I
created this course to improve your Git (and
GitHub) knowledge at a radical level. Launching
May 21, 2024. Join the waiting list!