📖 Scenario: You are building a simple Deno web server that will respond to requests on a custom domain. This project will guide you through setting up the domain configuration and creating a basic server that listens on the custom domain.
🎯 Goal: Build a Deno server configured to use a custom domain and respond with a welcome message.
📋 What You'll Learn
Create a variable called customDomain with the exact value "mycustomdomain.com".
Create a variable called port and set it to 8080.
Write a function called handleRequest that takes a Request object and returns a Response with the text "Welcome to mycustomdomain.com!".
Start a Deno server listening on the port and use handleRequest to respond to requests.
💡 Why This Matters
🌍 Real World
Custom domains are used to make web services accessible under a friendly and memorable address instead of an IP or default localhost.
💼 Career
Understanding how to configure servers with custom domains and ports is essential for backend development and deployment tasks.
Progress0 / 4 steps
1
Set up the custom domain variable
Create a variable called customDomain and assign it the string value "mycustomdomain.com".
Deno
Hint
Use const to declare the variable and assign the exact string.
2
Add the port configuration
Create a variable called port and set it to the number 8080.
Deno
Hint
Use const to declare the port variable with the number 8080.
3
Create the request handler function
Write a function called handleRequest that takes a Request object as a parameter and returns a new Response with the text "Welcome to mycustomdomain.com!".
Deno
Hint
Use a function declaration with the exact name handleRequest. Return a Response with the welcome message using template literals.
4
Start the Deno server with the custom domain and port
Use Deno.serve to start a server listening on the port variable and use the handleRequest function to respond to incoming requests.
Deno
Hint
Call Deno.serve with an object containing port and pass handleRequest as the handler function.
Practice
(1/5)
1. What is the main purpose of setting a custom domain in a Deno server?
easy
A. To increase the server's processing speed
B. To use your own website name instead of a generic address
C. To automatically update the server software
D. To enable debugging features in Deno
Solution
Step 1: Understand what a custom domain is
A custom domain lets you use a personalized website name instead of a default or generic address.
Step 2: Identify the purpose in Deno context
Setting a custom domain in Deno allows your server to respond to your own website name, making it easier for users to find your site.
Final Answer:
To use your own website name instead of a generic address -> Option B
Quick Check:
Custom domain = personalized website name [OK]
Hint: Custom domain means your own website name, not generic [OK]
Common Mistakes:
Confusing custom domain with server speed
Thinking it updates software automatically
Assuming it enables debugging
2. Which of the following is the correct way to set a custom domain hostname in Deno's serve function?
easy
A. serve({ url: "mydomain.com" })
B. serve({ domain: "mydomain.com" })
C. serve({ hostname: "mydomain.com" })
D. serve({ host: "mydomain.com" })
Solution
Step 1: Recall Deno serve options
The serve function accepts an option called hostname to set the domain name.
Step 2: Match the correct option key
Only hostname is the correct key; others like domain, host, or url are invalid here.
Final Answer:
serve({ hostname: "mydomain.com" }) -> Option C
Quick Check:
Use hostname option in serve [OK]
Hint: Use 'hostname' option exactly in serve function [OK]
Common Mistakes:
Using 'domain' or 'host' instead of 'hostname'
Passing the domain as a string without key
Confusing 'url' with hostname option
3. Given the following code snippet, what will be the hostname the server listens on?
import { serve } from "https://deno.land/std/http/server.ts";
serve(() => new Response("Hello"), { hostname: "example.com" });
medium
A. The server will throw a runtime error
B. The server listens on localhost only
C. The server listens on all IP addresses
D. The server listens on example.com domain
Solution
Step 1: Examine the hostname option
The code sets hostname: "example.com" in the serve options.
Step 2: Understand hostname resolution and binding
Deno resolves "example.com" to a public IP (93.184.216.34) via DNS. If the IP is assigned to the local machine's network interfaces, the server binds successfully and listens on that domain. Otherwise, it will throw a runtime error.
Step 3: Typical behavior
Usually, binding to a hostname that resolves to a public IP not assigned locally will fail. But if the environment is configured properly (e.g., hosts file or network interface), it can succeed.
Final Answer:
The server listens on example.com domain -> Option D
Quick Check:
Hostname option sets server listening domain [OK]
Hint: Hostname option sets server listening domain [OK]
Common Mistakes:
Thinking server listens directly on domain without IP resolution
Assuming default localhost behavior
Believing it falls back to all IPs
4. You set hostname: "mydomain.com" in your Deno server but users cannot reach your site. What is the most likely cause?
medium
A. You forgot to point your domain's DNS to your server's IP address
B. The serve function does not support custom domains
C. You must use host instead of hostname
D. Deno requires a special flag to enable custom domains
Solution
Step 1: Verify Deno serve supports hostname
Deno's serve supports hostname option, so options B, C, and D are incorrect.
Step 2: Check DNS setup
If users cannot reach the site, the domain's DNS likely does not point to the server's IP, blocking access.
Final Answer:
You forgot to point your domain's DNS to your server's IP address -> Option A
Quick Check:
DNS must point domain to server IP [OK]
Hint: Check DNS points domain to server IP if unreachable [OK]
Common Mistakes:
Assuming serve lacks custom domain support
Using wrong option key like 'host'
Thinking Deno needs special flags for domains
5. You want to serve your Deno app on your custom domain "myapp.com" and also allow access via localhost for testing. Which setup correctly supports both?
hard
A. Set hostname to "0.0.0.0" to listen on all interfaces including domain and localhost
B. Set hostname to "myapp.com, localhost" in a single serve call
C. Run two servers: one with hostname "myapp.com" and one with hostname "localhost"
D. Use hostname "localhost" and rely on DNS to redirect "myapp.com"
Solution
Step 1: Understand hostname options
Setting hostname to "0.0.0.0" makes the server listen on all network interfaces, including your domain and localhost.
Step 2: Evaluate other options
Run two servers: one with hostname "myapp.com" and one with hostname "localhost" requires two servers which is inefficient; Set hostname to "myapp.com, localhost" in a single serve call is invalid syntax; Use hostname "localhost" and rely on DNS to redirect "myapp.com" relies on DNS redirect which does not work for localhost access.
Final Answer:
Set hostname to "0.0.0.0" to listen on all interfaces including domain and localhost -> Option A
Quick Check:
Use 0.0.0.0 to listen on all interfaces [OK]
Hint: Use 0.0.0.0 hostname to serve domain and localhost [OK]
Common Mistakes:
Trying to list multiple hostnames in one serve call
Running multiple servers unnecessarily
Relying on DNS to redirect localhost
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.