Bird
Raised Fist0
Denoframework~5 mins

Routing patterns in Deno - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a routing pattern in web frameworks?
A routing pattern is a rule that matches a URL path to a specific code or function that handles the request. It helps the server decide what to do when a user visits a certain web address.
Click to reveal answer
beginner
How does a dynamic route differ from a static route?
A static route matches a fixed URL exactly, like '/about'. A dynamic route uses placeholders to match variable parts, like '/user/:id', where ':id' can be any user ID.
Click to reveal answer
intermediate
What does the pattern '/posts/:postId/comments/:commentId' represent?
It represents a nested dynamic route where ':postId' and ':commentId' are variables. This pattern matches URLs like '/posts/123/comments/456' to access a specific comment on a specific post.
Click to reveal answer
beginner
Why are routing patterns important in Deno web applications?
Routing patterns organize how the app responds to different URLs. They make the code cleaner and help users reach the right content or action easily.
Click to reveal answer
intermediate
Explain the use of wildcard routes in routing patterns.
Wildcard routes use symbols like '*' to match any path or part of a path. They are useful for catch-all routes, like showing a 404 page when no other route matches.
Click to reveal answer
Which routing pattern matches the URL '/user/42' if the pattern is '/user/:id'?
AStatic route exactly '/user/:id'
BNo match
CWildcard route matching any URL
DDynamic route with ':id' as 42
What does a wildcard '*' in a route pattern do?
AMatches only the root URL
BMatches any path or subpath
CMatches only static paths
DDisables routing
In Deno, which module is commonly used for routing?
Aoak
Bexpress
Cstd/http/router.ts
Dkoa
What is the benefit of using dynamic routes?
AThey allow handling many similar URLs with one pattern
BThey reduce server load
CThey improve page styling
DThey disable caching
Which route pattern would match '/products/electronics/123'?
A/products
B/products/*
C/products/:category/:id
D/products/:id
Describe how routing patterns help a Deno web server handle different URLs.
Think about how the server knows what to do when a user visits a page.
You got /3 concepts.
    Explain the difference between a wildcard route and a dynamic route in routing patterns.
    Consider how flexible each pattern is in matching URLs.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of routing patterns in a Deno web application?
      easy
      A. To store data in a database
      B. To style the webpage with colors and fonts
      C. To connect URLs to specific code that runs when those URLs are visited
      D. To manage user authentication only

      Solution

      1. Step 1: Understand routing role

        Routing connects web addresses (URLs) to the code that should run when those addresses are accessed.
      2. Step 2: Compare options

        Only To connect URLs to specific code that runs when those URLs are visited describes this connection. Other options describe unrelated tasks like styling or data storage.
      3. Final Answer:

        To connect URLs to specific code that runs when those URLs are visited -> Option C
      4. Quick Check:

        Routing = URL to code connection [OK]
      Hint: Routing links URLs to code that runs on visit [OK]
      Common Mistakes:
      • Confusing routing with styling or database tasks
      • Thinking routing only manages user login
      • Believing routing changes page colors
      2. Which of the following is the correct way to define a static route using Oak in Deno?
      easy
      A. router.get('/home', (ctx) => { ctx.response.body = 'Welcome'; });
      B. router.route('/home', (ctx) => { ctx.body = 'Welcome'; });
      C. router.add('/home', (ctx) => { ctx.response.body = 'Welcome'; });
      D. router.get('/home', (ctx) => { return 'Welcome'; });

      Solution

      1. Step 1: Recall Oak routing syntax

        Oak uses router.get(path, handler) to define GET routes. The handler sets ctx.response.body for response content.
      2. Step 2: Check each option

        router.get('/home', (ctx) => { ctx.response.body = 'Welcome'; }); matches correct syntax. router.route('/home', (ctx) => { ctx.body = 'Welcome'; }); uses non-existent method 'route'. router.add('/home', (ctx) => { ctx.response.body = 'Welcome'; }); uses 'add' which is invalid. router.get('/home', (ctx) => { return 'Welcome'; }); returns string instead of setting ctx.response.body.
      3. Final Answer:

        router.get('/home', (ctx) => { ctx.response.body = 'Welcome'; }); -> Option A
      4. Quick Check:

        Oak static route uses router.get and ctx.response.body [OK]
      Hint: Use router.get and set ctx.response.body for static routes [OK]
      Common Mistakes:
      • Using wrong router method like route or add
      • Returning string instead of setting ctx.response.body
      • Forgetting to set response body
      3. Given this Oak route code in Deno:
      router.get('/user/:id', (ctx) => {
        const id = ctx.params.id;
        ctx.response.body = `User ID is ${id}`;
      });
      
      // Request URL: /user/42

      What will be the response body when visiting /user/42?
      medium
      A. "User ID is :id"
      B. "User ID is 42"
      C. "User ID is undefined"
      D. "User ID is /user/42"

      Solution

      1. Step 1: Understand dynamic route parameter

        The route uses ':id' as a placeholder. When URL is '/user/42', ctx.params.id becomes '42'.
      2. Step 2: Check response body construction

        The response body uses template string to insert id value, so it becomes 'User ID is 42'.
      3. Final Answer:

        "User ID is 42" -> Option B
      4. Quick Check:

        Dynamic param ':id' = '42' in response [OK]
      Hint: Dynamic params fill ctx.params with URL parts [OK]
      Common Mistakes:
      • Using literal ':id' instead of param value
      • Forgetting to access ctx.params.id
      • Assuming undefined if param missing
      4. Identify the error in this Oak routing code snippet:
      router.get('/post/:postId', (ctx) => {
        const postId = ctx.request.params.postId;
        ctx.response.body = `Post: ${postId}`;
      });
      medium
      A. ctx.response.body cannot be a template string
      B. Missing async keyword in handler
      C. Route path should not have colon before postId
      D. ctx.request.params is undefined; should use ctx.params

      Solution

      1. Step 1: Check how to access route params in Oak

        Route parameters are accessed via ctx.params, not ctx.request.params.
      2. Step 2: Verify other parts

        Async is not required here. Colon before postId is correct for dynamic routes. Template strings are valid for response body.
      3. Final Answer:

        ctx.request.params is undefined; should use ctx.params -> Option D
      4. Quick Check:

        Use ctx.params for route parameters [OK]
      Hint: Use ctx.params, not ctx.request.params for route params [OK]
      Common Mistakes:
      • Accessing params from ctx.request instead of ctx
      • Thinking async is mandatory for all handlers
      • Removing colon from dynamic route path
      5. You want to create a Deno Oak route that matches URLs like /product/123/review/456 where 123 is the product ID and 456 is the review ID. Which route pattern correctly captures both IDs as parameters?
      hard
      A. router.get('/product/:productId/review/:reviewId', (ctx) => { /* ... */ });
      B. router.get('/product/:productId/:reviewId/review', (ctx) => { /* ... */ });
      C. router.get('/product/review/:productId/:reviewId', (ctx) => { /* ... */ });
      D. router.get('/product/:productId/review', (ctx) => { /* ... */ });

      Solution

      1. Step 1: Analyze URL structure

        The URL has 'product', then product ID, then 'review', then review ID in order.
      2. Step 2: Match route pattern to URL

        router.get('/product/:productId/review/:reviewId', (ctx) => { /* ... */ }); matches this pattern exactly with dynamic segments ':productId' and ':reviewId' in correct places.
      3. Step 3: Check other options

        router.get('/product/:productId/:reviewId/review', (ctx) => { /* ... */ }); misplaces ':reviewId' before 'review' segment. router.get('/product/review/:productId/:reviewId', (ctx) => { /* ... */ }); swaps order. router.get('/product/:productId/review', (ctx) => { /* ... */ }); misses review ID parameter.
      4. Final Answer:

        router.get('/product/:productId/review/:reviewId', (ctx) => { /* ... */ }); -> Option A
      5. Quick Check:

        Dynamic segments match URL parts in order [OK]
      Hint: Match URL parts exactly; use :param for dynamic segments [OK]
      Common Mistakes:
      • Swapping order of dynamic segments and static parts
      • Omitting one of the dynamic parameters
      • Placing parameters in wrong URL positions
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard