Crystal HTTP Server framework
π(13)π 2025-07-12 03:23:37 -0700
β²οΈπ 2025-07-12 03:24:15 -0700
βοΈ infinivaeria
π·οΈ[server] [crystal] [rustby] [rustby-crystal] [rustby-c]
(πͺ)
π₯οΈ...β¨οΈ
require "http/server"
# A fundamental concept in HTTP servers is handlers. In Crystal,
# we define handlers as blocks or procs that take an HTTP::Server::Context
# as an argument.
# This handler responds with a simple "hello" message
hello_handler = ->(context : HTTP::Server::Context) do
context.response.content_type = "text/plain"
context.response.print "hello\n"
end
# This handler reads all the HTTP request headers and echoes them
# into the response body
headers_handler = ->(context : HTTP::Server::Context) do
context.response.content_type = "text/plain"
context.request.headers.each do |name, values|
values.each do |value|
context.response.print "#{name}: #{value}\n"
end
end
end
# Create a new HTTP server
server = HTTP::Server.new do |context|
case context.request.path
when "/hello"
hello_handler.call(context)
when "/headers"
headers_handler.call(context)
else
context.response.status_code = 404
context.response.print "Not Found\n"
end
end
# Start the server
address = server.bind_tcp 8090
puts "Listening on http://#{address}"
server.listen