跳至內容

HTTP 伺服器

一個稍微有趣一點的範例是 HTTP 伺服器

require "http/server"

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

address = server.bind_tcp 8080
puts "Listening on http://#{address}"
server.listen

當您讀完整個語言參考後,上面的程式碼就會變得有意義,但我們已經可以學到一些東西。

  • 您可以引入其他檔案中定義的程式碼

    require "http/server"
    
  • 您可以定義區域變數,而無需指定其型別

    server = HTTP::Server.new(...)
    
  • HTTP 伺服器的連接埠是透過在 HTTP::Server 物件上使用 bind_tcp 方法來設定的(連接埠設定為 8080)。

    address = server.bind_tcp 8080
    
  • 您可以透過呼叫方法(或傳送訊息)給物件來編寫程式。

    HTTP::Server.new(...)
    # ...
    Time.local
    # ...
    address = server.bind_tcp 8080
    # ...
    puts "Listening on http://#{address}"
    # ...
    server.listen
    
  • 您可以使用程式碼區塊,或簡稱為區塊,這是一種非常方便的方式來重複使用程式碼並從函數式世界中獲得一些功能

    HTTP::Server.new do |context|
      # ...
    end
    
  • 您可以輕鬆建立具有嵌入內容的字串,稱為字串插值。該語言還附帶其他語法來建立陣列、雜湊、範圍、元組等等

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