Chapter 43: File-Based Routing in C#
Auto-register pages from file structure. In this chapter, you will learn file-based routing in depth with C# code examples, explanations, and best practices.
Overview
This chapter covers file-based routing for Kungfu.js developers using C#. 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 C#:
// 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 C#. 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.