Включает ли каждый маршрут свой запрос и ответ, возвращаемый сервером?

Для каждого dir.. это Route, который принимает Request и возвращает Response, созданный Server. Мне интересно, включены ли Request и Response в каждую строку кода. Заранее спасибо!

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
]

person Mia.M    schedule 15.06.2016    source источник
comment
Я не уверен, что понимаю, о чем вы спрашиваете. Возможно, это руководство поможет: schoolofhaskell.com/user/stepcut/the-happstack- ускоренный курс   -  person ErikR    schedule 15.06.2016
comment
Я имею в виду, что в каждом маршруте должен быть запрос и ответ. Это правильно?   -  person Mia.M    schedule 15.06.2016


Ответы (1)


Каждая строка является обработчиком. Думайте об обработчике как о функции, которая принимает запрос и возвращает ответ.

graphReponse — это обработчик, который обрабатывает запрос определенным образом.

dir изменяет обработчик, чтобы он не вызывался, если URL-адрес запроса не начинается определенным образом.

Нет ничего особенного в том, что в названии обработчиков есть слово Response. graphResponse — это просто имя функции — вы можете использовать любые имена для своих функций-обработчиков.

У вас есть список обработчиков, например:

[ handler1,
  handler2,
  ...,
  notFoundResponse
]

Когда приходит запрос, проверяется, обработает ли handler1 запрос. Если нет, проверяется handler2 и так далее. Если ни один обработчик не принимает запрос, вызывается notFoundHandler, что, вероятно, сгенерирует страницу 404.

Вот почему часть dir ... важна — она не позволяет обработчику отвечать, если URL-адрес не начинается определенным образом.

person ErikR    schedule 15.06.2016
comment
Я понимаю. Большое спасибо! Я знаю, что нет ничего особенного в том, что в названии обработчиков есть слово «Ответ». Однако мне интересно, можем ли мы использовать имя обработчика для обозначения ответа, который возвращается сам по себе. - person Mia.M; 15.06.2016
comment
Просто назовите свои обработчики, как хотите — имя обработчика не имеет значения. Как насчет голосования? - person ErikR; 16.06.2016
comment
Спасибо! Я уже сделал это, но моя репутация все еще ниже 15. Так что мой голос останется незамеченным. - person Mia.M; 18.06.2016