2016-06-15 28 views
0

對於每個dir..,它是一個Route,它接收Request並返回由Server創建的Response。我想知道是否RequestResponse包含在代碼的每一行中。提前致謝!每個路由是否包含其請求和服務器返回的響應?

simpleHTTP serverConf $ do 
decodeBody (defaultBodyPolicy "/tmp/" 4096 4096 4096) 
msum [ do 
     nullDir 
     seeOther "graph" (toResponse "Redirecting to /graph"), 
     dir "grid" gridResponse, 
     dir "graph" graphResponse, 
     dir "image" graphImageResponse, 
     dir "timetable-image" $ look "courses" >>= \x -> look "session" >>= timetableImageResponse x, 
     dir "graph-fb" $ seeOther redirectUrlGraphEmail $ toResponse "", 
     dir "post-fb" $ seeOther redirectUrlGraphPost $ toResponse "", 
     dir "test" $ look "code" >>= getEmail, 
     dir "test-post" $ look "code" >>= postToFacebook, 
     dir "post" postResponse, 
     dir "draw" drawResponse, 
     dir "about" $ aboutResponse aboutContents, 
     dir "privacy" $ privacyResponse privacyContents, 
     dir "static" $ serveDirectory DisableBrowsing [] staticDir, 
     dir "course" $ look "name" >>= retrieveCourse, 
     dir "all-courses" $ liftIO allCourses, 
     dir "graphs" $ liftIO queryGraphs, 
     dir "course-info" $ look "dept" >>= courseInfo, 
     dir "depts" $ liftIO deptList, 
     dir "timesearch" searchResponse, 
     dir "calendar" $ lookCookieValue "selected-lectures" >>= calendarResponse, 
     dir "get-json-data" $ look "graphName" >>= \graphName -> liftIO $ getGraphJSON graphName, 
     dir "loading" $ look "size" >>= loadingResponse, 
     dir "save-json" $ look "jsonData" >>= \jsonStr -> look "nameData" >>= \nameStr -> liftIO $ saveGraphJSON jsonStr nameStr, 
     notFoundResponse 
] 
+1

我不知道我明白你在問什麼。也許這個教程將幫助:https://www.schoolofhaskell.com/user/stepcut/the-happstack-crashcourse – ErikR

+0

我的意思是在每條路線中,應該有一個請求和一個響應。那是對的嗎? –

回答

0

每一行是一個處理程序。將處理程序看作是一個接受請求並返回響應的函數。

graphReponse是以某種方式處理請求的處理程序。

dir修改處理程序,以便它不會被調用,除非請求url以某種方式開始。

處理程序的名稱中沒有什麼特別的字ResponsegraphResponse只是一個函數的名稱 - 您可以使用您的處理函數的任何名稱。

你有什麼是當一個請求到來時進行檢查,看是否handler1處理請求處理程序的列表,例如:

[ handler1, 
    handler2, 
    ..., 
    notFoundResponse 
] 

。如果沒有,則選中handler2等。如果沒有處理程序接受請求,則調用notFoundHandler,這可能會生成404頁。

這就是爲什麼dir ...部分很重要 - 它阻止處理程序響應,除非URL以某種方式開始。

+0

我明白了。非常感謝!我知道在處理程序的名字中有'Response'這個詞是沒有什麼特別的。但是,我想知道是否可以使用處理程序的名稱來代表自己返回的響應。 –

+0

只要你想處理你的處理程序 - 處理程序的名稱並不重要。如何投票? – ErikR

+0

謝謝!我已經做到了,但是我的名聲仍然在15歲以下。所以我給出的投票權仍然是看不見的。 –

相關問題