2016-06-15 30 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岁以下。所以我给出的投票权仍然是看不见的。 –

相关问题