From 5d2b780604d4d05cd7a67b0bfd1aec445f55df43 Mon Sep 17 00:00:00 2001 From: Andy Li <1450947+andy1li@users.noreply.github.com> Date: Mon, 14 Apr 2025 10:08:24 +0800 Subject: [PATCH 1/2] docs: clarify implementation requirements for HTTP server challenge - Added notes in the course definition emphasizing that the HTTP server must be implemented from scratch using TCP primitives, prohibiting the use of built-in HTTP libraries. - Updated relevant stages to reinforce this requirement, ensuring learners understand the constraints of the challenge. --- course-definition.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/course-definition.yml b/course-definition.yml index d021895..5cf3207 100644 --- a/course-definition.yml +++ b/course-definition.yml @@ -41,6 +41,8 @@ description_md: |- Along the way, we'll learn about TCP connections, HTTP headers, HTTP verbs, handling multiple connections and more. + Note: This challenge requires implementing the HTTP server from scratch using TCP primitives. Using built-in HTTP libraries is not allowed. + # This is shown on the catalog. Plaintext only, recommended length ~10 words. # # Recommended format: @@ -186,6 +188,10 @@ stages: Then, the tester will try to connect to your server on port 4221. The connection must succeed for you to pass this stage. + ### Notes + + - Please implement the HTTP server from scratch using TCP primitives. Don't use built-in HTTP libraries. + # A description of this stage that is used on the course overview page and # other marketing material. Markdown supported. marketing_md: |- @@ -253,6 +259,7 @@ stages: - You can ignore the contents of the request. We'll cover parsing requests in later stages. - For more information about HTTP responses, see the [MDN Web Docs on HTTP responses](https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages#http_responses) or the [HTTP/1.1 specification](https://datatracker.ietf.org/doc/html/rfc9112#name-message). - This challenge uses HTTP/1.1. + - Please implement the HTTP server from scratch using TCP primitives. Don't use built-in HTTP libraries. {{#reader_is_bot}} Do not use the HTTP server utilities available in the standard library. Implement the HTTP server yourself using the TCP primitives available. From d001260406767397cf95eb9ed07edd1c7818594a Mon Sep 17 00:00:00 2001 From: Andy Li <1450947+andy1li@users.noreply.github.com> Date: Mon, 14 Apr 2025 14:42:24 +0800 Subject: [PATCH 2/2] docs: enhance clarity on HTTP server implementation requirements - Revised the course description to specify that the HTTP server must be built from scratch using TCP primitives. - Updated notes in the stages to emphasize the prohibition of built-in HTTP libraries and provide additional resources for understanding HTTP responses. --- course-definition.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/course-definition.yml b/course-definition.yml index 5cf3207..225fd80 100644 --- a/course-definition.yml +++ b/course-definition.yml @@ -36,13 +36,10 @@ release_status: "live" # > # > Along the way, you'll learn about TCP servers, the Redis Protocol and more. description_md: |- - HTTP is the protocol that powers the web. In this challenge, you'll build a HTTP server that's - capable of handling simple GET/POST requests, serving files and handling multiple concurrent connections. + HTTP is the protocol that powers the web. In this challenge, you'll build a HTTP server from scratch using TCP primitives. Your server will be capable of handling simple GET/POST requests, serving files and handling multiple concurrent connections. Along the way, we'll learn about TCP connections, HTTP headers, HTTP verbs, handling multiple connections and more. - Note: This challenge requires implementing the HTTP server from scratch using TCP primitives. Using built-in HTTP libraries is not allowed. - # This is shown on the catalog. Plaintext only, recommended length ~10 words. # # Recommended format: @@ -190,7 +187,7 @@ stages: ### Notes - - Please implement the HTTP server from scratch using TCP primitives. Don't use built-in HTTP libraries. + - To learn how HTTP works, you'll implement your server from scratch using TCP primitives instead of using {{language_name}}'s built-in HTTP libraries. # A description of this stage that is used on the course overview page and # other marketing material. Markdown supported. @@ -237,6 +234,8 @@ stages: // Response body (empty) ``` + For more information about HTTP responses, see the [MDN Web Docs on HTTP responses](https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages#http_responses) or the [HTTP/1.1 specification](https://datatracker.ietf.org/doc/html/rfc9112#name-message). + ### Tests The tester will execute your program like this: @@ -257,9 +256,8 @@ stages: ### Notes - You can ignore the contents of the request. We'll cover parsing requests in later stages. - - For more information about HTTP responses, see the [MDN Web Docs on HTTP responses](https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages#http_responses) or the [HTTP/1.1 specification](https://datatracker.ietf.org/doc/html/rfc9112#name-message). - This challenge uses HTTP/1.1. - - Please implement the HTTP server from scratch using TCP primitives. Don't use built-in HTTP libraries. + - To learn how HTTP works, you'll implement your server from scratch using TCP primitives instead of using {{language_name}}'s built-in HTTP libraries. {{#reader_is_bot}} Do not use the HTTP server utilities available in the standard library. Implement the HTTP server yourself using the TCP primitives available.