2015-12-31 68 views
0

我是葡萄::實體工作了定製響應 但是,當我看到 Grape::Entity葡萄::實體定製響應解釋

文檔它說,與虎視眈眈::實體,我們可以在運行時決定哪個屬性發送&哪些不是。 但我無法理解的代碼甚至給出提示

expose :ip, if: { type: :full } 
expose :ip, if: lambda { |instance, options| options[:type] == :full } # exposed if the function evaluates to true 
expose :ip, if: :type # exposed if :type is available in the options hash 
expose :ip, if: { type: :full } # exposed if options :type has a value of :full 
expose :ip, unless: ... # the opposite of :if 
expose :last_reply, using: API::Entities::Status do |status, options| 
    status.replies.last 
end 

with_options(format_with: :iso_timestamp) do 
    expose :created_at 
    expose :updated_at 
end 

expose :digest do |status, options| 
    Digest::MD5.hexdigest status.txt 
end 

我會很感激,如果有人通過行解釋線

回答

0

OK,我會試試看。你應該知道

一件事是,你可以通過可選的屬性到你的葡萄::實體,當你在你的葡萄端點調用它:

present statuses, with: API::Entities::Status, type: :full 

你可以通過任何東西到實體對象(例如type) 。

使用這些可選屬性,您可以在實體內部工作。

  • 線1:如果type具有值:full:ip暴露
  • 線2:同第1行,但是膠囊的λ內部。您可以訪問塊內的instanceoptions散列。
  • 線3:如果type存在於實體,:ip暴露
  • 線4:相同線路1條
  • 線5:作爲註釋說
  • 線6-8:這是一個嵌套實體。 :using聲明哪個實體類用於此暴露。該塊設置傳遞給實體的實例,在本例中爲最後一個對象status.replies
  • 第10-13行:您可以使用with_options塊格式化日期或時間對象。在這種情況下,使用:iso_timestamp格式化程序。
  • 第15-17行:這是另一種暴露方式。在本例中,您將公開status.txt的摘要。

我希望這會幫助你莫名其妙。