Веб-разработчик на Haskell использует минимальные средства, например. Скотти - PullRequest
0 голосов
/ 29 октября 2019

Контекст: изучение Haskell. Не хочу ввязываться в TH и QQ прямо сейчас. Нужна быстрая и грязная передняя часть, которая прямолинейна и понятна. Выбрал Скотти. Однако: необходимо взаимодействие от и до внешнего интерфейса. Можно использовать именованные параметры (код ниже). HTML (landing.html) кнопка, отправляющая youclickedme текстовое поле, и кнопка, которая отправляет содержимое текстового поля, используя GET. Очевидно, что я могу использовать POST/GET между страницами, но есть ли более быстрый способ передачи параметров спереди назад и наоборот?

{-# LANGUAGE OverloadedStrings #-}

module Main where 

import Network.HTTP.Types.Status
import Web.Scotty
import Data.Monoid 

myWayz :: ScottyM () 
myWayz = do 
  get "/" home 
  get "/namedparam/:name" $ do 
    name <- param "name" 
    case name of 
      "youclickedme"  -> text ("reflector: " <> name) 
      "mytext"        -> text ("reflector: " <> name) 
      "discard"       -> discard
      _               -> text ("reflector: " <> name) 

home :: ActionM () 
home = do 
  setHeader "Content-Type" "text/html" 
  file "landing.html" 

discard :: ActionM () 
discard = do 
  setHeader "Content-Type" "text/html" 
  file $ "discarded.html"

main :: IO () 
main = scotty 666 myWayz
...