lapis請求處理

NO IMAGE

lapis請求處理

每個被Lapis

這些路由與URL

在上面的例子中,我們呼叫 print 函式來除錯,當在openresty中執行時,print的輸出是被髮送到nginx的notice級別的日誌中去的

捕獲的路由引數的值按其名稱儲存在請求物件的 params

如果將任何文字直接放在splat

以上將匹配 /projects/leafo

引數字元類

字元類可以應用於命名引數,以限制可以匹配的字元。語法建模在 Lua

這個路由只匹配十六進位制引數的十六進位制字串。

/color/:hex[a-fA-F%d]

路由優先順序

首先按優先順序搜尋路由,然後按它們定義的順序搜尋。從最高到最低的路由優先順序為:

精確匹配的路由 /hello/world
變化引數的路由 /hello/:variable
貪婪匹配的路由 /hello/*

命名路由

為您的路由命名是有用的,所以只要知道網頁的名稱就可以生成到其他網頁的連結,而不是硬編碼 URL

我們可以使用self:url_for()

respond_to

在任何 POST

Before Filters

有時你想要一段程式碼在每個操作之前執行。一個很好的例子是設定使用者會話。我們可以宣告一個 before 過濾器,或者一個在每個操作之前執行的函式,像這樣:

local app = lapis.Application()
app:before_filter(function(self)
if self.session.user then
self.current_user = load_user(self.session.user)
end
end)
app:match("/", function(self)
return "current user is: " .. tostring(self.current_user)
end)

你可以通過多次呼叫 app:before_filter

self:write()

現有的 Cookie

預設情況下,所有 Cookie

cookie_attributes

預設情況下,session

請求物件的方法

write(things...)

如果 name_or_obj

到頁面的 URL

如果提供了第三個引數 query_params

如果提供了所有封閉的引數,則只包括路由的任何可選元件。 如果 optinal

可以生成以下 URL

如果路由包含了 splat

-- returns: /browse
self:url_for("browse")
-- returns: /browse/games/recent
self:url_for("browse", { splat = "games/recent" })

將物件傳遞給 url_for

我們現在可以將User

你可能會注意到我們將 ...

使用 url_key

如果我們想生成一個user_profile

我們定義的 url_key

url_key

渲染選項

每當寫一個表時,鍵/值對(對於是字串的鍵)被複制到 self.options

以下是可以寫入的 options

應用程式回撥

應用程式回撥是一種特殊方法,它可以在需要處理某些型別的請求時呼叫。可以被應用程式覆蓋, 雖然它們是儲存在應用程式上的函式,但它們被稱為是常規操作,這意味著函式的第一個引數是請求物件的例項。

預設操作

當請求與您定義的任何路由不匹配時,它將執行預設處理函式。 Lapis

如果它注意到URL

你會注意到在default_route

這將在每個無效請求上觸發 500

錯誤處理

Lapis

傳遞給錯誤處理程式的請求物件或 self 不是失敗了的請求建立的請求物件。 Lapis 提供了一個新的,因為之前的可能已經寫入失敗了。

您可以使用self.original_request訪問原始請求物件

Lapis 的預設錯誤頁面顯示整個錯誤堆疊,因此在生產環境中建議將其替換自定義堆疊跟蹤,並在後臺記錄異常。

lapis-exceptions 模組增加了錯誤處理程式以在資料庫中記錄錯誤。 它也可以當有異常時向您傳送電子郵件。