【发布时间】:2016-09-07 06:57:13
【问题描述】:
我可以使用 Ruby on Rails/JS/HTML/CSS 进行编程和开发,以制作一个全栈应用程序。但是,我对 HTTP 请求/响应周期的理解存在漏洞。以下几点是否正确?
- 如果我创建一个 Rails 应用程序,并在命令行上键入
rails server,我会得到一个本地服务器,我可以向它发出请求。如果我打开浏览器,输入localhost:3000,然后按回车,我正在向本地服务器发出 HTTP 请求。 - Rails 默认使用名为 WEBrick 的 Web 服务器,但也有其他服务器,如 Thin、Puma 和 Unicorn。这些都是软件,使它们成为网络服务器的原因是该软件实现了处理 HTTP 请求的功能。
- 当我运行本地 Web 服务器时,这意味着我的计算机正在运行这些用于侦听 HTTP 请求的软件之一。
以上是“运行本地网络服务器”的意思吗?
- 我还看到了“运行本地 Web 服务器”的其他示例。其中之一是在项目目录中运行
npm install -g http-server,然后导航到localhost:8080。这也只是开始运行并在端口 8080 上接受 HTTP 请求的软件吗? - 在 Ruby 命令行上,安装 rack gem:
gem install rack。然后在一个新的 Ruby 文件中我们require 'rack',启动一个 Web 服务器:
Rack::Server.start({ app: MySimpleApp, port: 3000 })
然后我们可以定义一个符合机架标准的 Web 应用程序 MySimpleApp(响应 call 方法的对象):
class MySimpleApp
def self.call
(...)
end
end
所以现在当我们在浏览器中导航到 localhost:3000 时,MySimpleApp 被执行。 rack 是否只是运行它的默认 WEBrick 服务器?上述命令的作用是简单地运行本地 Web 服务器并定义 HTTP 请求进来时要做什么(执行 MySimpleApp)?
【问题讨论】:
标签: ruby-on-rails ruby http webserver