Sinatra 返回值

2023-12-19 16:14 更新

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

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

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

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

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

get('/') { Stream.new }

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號