diff options
Diffstat (limited to 'aoc2023/build/packages/gleam_http/README.md')
-rw-r--r-- | aoc2023/build/packages/gleam_http/README.md | 67 |
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 |