跳至内容

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 其他文件中定义的代码

    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}"