Sinatra 返回值

2023-12-19 16:14 更新

路由代碼塊的返回值至少?zèng)Q定了返回給 HTTP 客戶(hù)端的?響應(yīng)體?,或者至少?zèng)Q定了在?Rack堆棧?中的下一個(gè)中間件。大多數(shù)情況下,將是一個(gè)字符串,就像上面的例子中的一樣。但是其他值也是可以接受的。

你可以返回任何對(duì)象,或者是一個(gè)合理的 Rack 響應(yīng),Rack body 對(duì)象或者 HTTP 狀態(tài)碼:

  • 帶有如下三個(gè)元素?cái)?shù)組: [status (Fixnum), headers (Hash), response body (responds to #each)]
  • 帶有兩個(gè)元素的數(shù)組: [status (Fixnum), response body (responds to #each)]
  • 響應(yīng)?each?方法,并且對(duì)于給定的塊接受字符串參數(shù)的 ruby 對(duì)象
  • 表示狀態(tài)碼的整數(shù)

那樣,我們可以輕松的實(shí)現(xiàn)例如流式傳輸?shù)睦樱?/p>

class Stream
  def each
    100.times { |i| yield "#{i}\n" }
  end
end

get('/') { Stream.new }

可以使用?stream?輔助函數(shù)來(lái)減少 boiler plate(??) , 并在路徑中內(nèi)嵌流邏輯。

所以,學(xué)習(xí)技術(shù)果然還是要基礎(chǔ)牢固,從底層開(kāi)始,自下而上的構(gòu)建技術(shù)體系。所以,Rack 到底是什么,其本身是如何模塊化的 web 編程,很多事情都需要從概念上去把握。
以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)