我可以在Ruby on Rails / JS / HTML / CSS上编程和开发,以创建一个完整的堆栈应用程序。但是,我对HTTP请求/响应周期的理解存在漏洞。以下几点是否正确?
rails server
,我会得到一个本地服务器,我可以向其发出请求。如果我打开浏览器,请键入localhost:3000
,然后按回车键,我正在向本地服务器发出HTTP请求。 以上是“运行本地网络服务器”的意思吗?
npm install -g http-server
,然后导航到localhost:8080
。这也只是开始运行并接受端口8080上的HTTP请求的软件吗?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)吗?
答案 0 :(得分:5)
你对那里的理解非常正确。 HTTP只是一种基于文本的协议,与许多协议一样,它通过TCP / IP进行操作。
内置的WEBrick服务器不是用Ruby编写的HTTP服务器的最佳示例,但它包含在遗留原因中,因为它通常“足够好”,可以帮助您入门。 Pow要好得多,尽管由生产Rails的同一家公司制作,但它主要用Node编写。
与许多基于互联网的协议一样,HTTP的美妙之处在于,只要您遵守标准,使用何种语言并不重要。
Rack是一个在HTTP后面运行的层,在请求/响应周期中提供了一层薄的抽象。
答案 1 :(得分:2)
服务器可以打开一个端口(80,443,8080)进行某种数据传输。端口80是HTTP端口,端口443是HTTPS端口。 8080是一个常用的开发端口(如3000)。 https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
根据定义,本地服务器是在您的计算机上运行的服务器。
总的来说,你肯定是在正确的轨道上。