Linguagem de Programação Crystal

Servidor HTTP

Um exemplo ligeiramente mais interessando é o de um servidor HTTP:

require "http/server"

server = HTTP::Server.new(8080) do |context|
  context.response.content_type = "text/plain"
  context.response.print "Hello world! The time is #{Time.now}"
end

puts "Listening on http://0.0.0.0:8080"
server.listen

O código acima fará sendio depois que você ler a documentação completa, mas já podemos aprender algumas coisas.

  • Você pode incluir código definido em outros arquivos:

      require "http/server"
    
  • Você pode definir variáveis locais sem a necessidade de especificar o seu tipo:

      server = HTTP::Server.new ...
    
  • Você programa invocando métodos (ou enviando mensagens) em objetos.

      HTTP::Server.new(8000) ...
      ...
      Time.now
      ...
      puts "Listening on http://0.0.0.0:8080"
      ...
      server.listen
    
  • Você pode usar blocos de código, ou simplesmente blocos, que são um modo muito conveniente de reaproveitar código e usar algumas características do mundo funcional:

      HTTP::Server.new(8080) do |context|
        ...
      end
    
  • Você pode criar strings facilmente com conteúdo embutido, também chamado de interpolação de strings. A linguagem também vem com outras sintaxes para criar arrays, hashes, ranges, tuplas e mais:

      "Hello world! The time is #{Time.now}"