我可以用RubyonRails/JS/HTML/CSS进行编程和开发,以制作一个全栈应用程序。然而,在我对HTTP请求/响应周期的理解上存在漏洞。以下几点正确吗?
- 如果我制作了一个Rails应用程序,在命令行上键入
rails server
,我会得到一个本地服务器,我可以向它发出请求。如果我打开浏览器,键入localhost:3000
,然后按enter键,我就会向本地服务器发出HTTP请求 - Rails默认使用一个名为WEBrick的web服务器,但也有其他服务器,如Thin、Puma和Unicorn。这些都是软件,使它们成为web服务器的原因是该软件实现了处理HTTP请求的功能
- 当我运行本地web服务器时,这意味着我的计算机正在运行其中一个监听HTTP请求的软件
以上是"运行本地web服务器"的意思吗
- 我看到了其他"运行本地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就会被执行机架只是在运行它的默认WEBrick服务器吗?上面的命令是简单地运行本地web服务器并定义当HTTP请求传入时要做什么(执行MySimpleApp)吗
您的理解基本正确。HTTP只是一种基于文本的协议,和许多协议一样,它通过TCP/IP进行操作。
内置的WEBrick服务器并不是用Ruby编写的HTTP服务器的最佳示例,但它之所以包含在内,是因为它通常"足够好",可以让您开始使用。Pow要好得多,尽管它是由生产Rails的同一家公司生产的,但它主要是用Node编写的。
与许多基于互联网的协议一样,HTTP的美妙之处在于,只要遵守标准,使用什么语言并不重要。
Rack是一个在HTTP后面操作的层,它在请求/响应周期上提供了一个薄薄的抽象层。
服务器是为某种数据传输打开端口(80443880)的东西。端口80是HTTP端口,端口443是HTTPS端口。8080是开发中常用的端口(与3000一样)。https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
根据定义,本地服务器是在您的计算机上运行的服务器。
总的来说,你肯定走在了正确的轨道上。