aboutsummaryrefslogtreecommitdiff
path: root/aoc2023/build/packages/gleam_http/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'aoc2023/build/packages/gleam_http/README.md')
-rw-r--r--aoc2023/build/packages/gleam_http/README.md67
1 files changed, 67 insertions, 0 deletions
diff --git a/aoc2023/build/packages/gleam_http/README.md b/aoc2023/build/packages/gleam_http/README.md
new file mode 100644
index 0000000..9e06952
--- /dev/null
+++ b/aoc2023/build/packages/gleam_http/README.md
@@ -0,0 +1,67 @@
+# Gleam HTTP
+
+Types and functions for HTTP clients and servers!
+
+## HTTP Service Example
+
+```gleam
+import gleam/http/elli
+import gleam/http/response.{Response}
+import gleam/http/request.{Request}
+import gleam/bit_builder.{BitBuilder}
+
+// Define a HTTP service
+//
+pub fn my_service(request: Request(t)) -> Response(BitBuilder) {
+ let body = bit_builder.from_string("Hello, world!")
+
+ response.new(200)
+ |> response.prepend_header("made-with", "Gleam")
+ |> response.set_body(body)
+}
+
+// Start it on port 3000 using the Elli web server
+//
+pub fn main() {
+ elli.become(my_service, on_port: 3000)
+}
+```
+
+## Server adapters
+
+In the example above the Elli Erlang web server is used to run the Gleam HTTP
+service. Here's a full list of the server adapters available, sorted
+alphabetically.
+
+| Adapter | About |
+| --- | --- |
+| [Mist][mist] | [Mist][mist] is a high performance pure Gleam web server |
+| [gleam_cowboy][cowboy-adapter] | [Cowboy][cowboy] is an Erlang HTTP2 & HTTP1.1 web server |
+| [gleam_elli][elli-adapter] | [Elli][elli] is an Erlang HTTP1.1 web server |
+| [gleam_plug][plug-adapter] | [Plug][plug] is an Elixir web application interface |
+
+[cowboy]:https://github.com/ninenines/cowboy
+[cowboy-adapter]: https://github.com/gleam-lang/cowboy
+[elli]:https://github.com/elli-lib/elli
+[elli-adapter]: https://github.com/gleam-lang/elli
+[plug]:https://github.com/elixir-plug/plug
+[plug-adapter]: https://github.com/gleam-lang/plug
+[mist]: https://github.com/rawhat/mist
+
+## Client adapters
+
+Client adapters are used to send HTTP requests to services over the network.
+Here's a full list of the client adapters available, sorted alphabetically.
+
+| Adapter | About |
+| --- | --- |
+| [gleam_fetch][fetch-adapter] | [fetch][fetch] is a HTTP client included with JavaScript |
+| [gleam_hackney][hackney-adapter] | [Hackney][hackney] is a simple HTTP client for Erlang |
+| [gleam_httpc][httpc-adapter] | [httpc][httpc] is a HTTP client included with Erlang |
+
+[hackney]: https://github.com/benoitc/hackney
+[hackney-adapter]: https://github.com/gleam-lang/hackney
+[httpc]: https://erlang.org/doc/man/httpc.html
+[httpc-adapter]: https://github.com/gleam-lang/httpc
+[fetch]: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
+[fetch-adapter]: https://github.com/gleam-lang/fetch