Chapter 43: File-Based Routing in Java
Auto-register pages from file structure. In this chapter, you will learn file-based routing in depth with Java code examples, explanations, and best practices.
Overview
This chapter covers file-based routing for Kungfu.js developers using Java. We will start with the basics, move through practical examples, and end with advanced techniques and common pitfalls.
Why This Matters
Understanding file-based routing is essential because it is a core part of building web applications. Every real-world app needs to handle auto-register pages from file structure. Skipping this chapter would leave a gap in your knowledge that would cause problems later.
Code Example
Here is how routing works in Java:
// Static route
app.get('/', (req) => { ... });
// Path parameter: /users/42
app.get('/users/:id', (req) => {
const id = req.param('id'); // "42"
});
// Wildcard: /assets/css/app.css
app.get('/assets/*path', (req) => {
const path = req.param('path'); // "css/app.css"
});
// Query string: /search?q=rust&limit=10
app.get('/search', (req) => {
const q = req.query('q'); // "rust"
const limit = req.query('limit'); // "10"
});
How It Works
The router uses a trie data structure. Each segment of the URL path becomes a node in the tree. When a request comes in, the router walks the tree segment by segment. This is much faster than checking every route one by one.
For example, if you register /users/:id and a request comes in for /users/42, the router:
- Starts at the root node
- Moves to the "users" child node
- Sees a parameter node ":id" and captures "42" as the id parameter
- Calls your handler with
req.param("id")equal to "42"
Common Mistakes
- Not reading the documentation: Always check the API reference when something does not work as expected.
- Skipping security: Never disable the default middleware unless you have a very good reason. Security is not optional.
- Not testing: Write tests for your handlers. Kungfu.js makes this easy with the built-in test utilities.
Summary
In this chapter, you learned about file-based routing in Java. You saw code examples, understood how things work under the hood, and learned about common mistakes to avoid.
What is Next?
In chapter 44, we will cover Live Reload: WebSocket-based hot refresh in dev mode.