Haskell 在YesSOD中提供特定的html文件

Haskell 在YesSOD中提供特定的html文件,haskell,yesod,Haskell,Yesod,我正在尝试使用静态文件路由、webservice api和域根目录下的主地址设置服务器。我的YesSOD应用程序如下所示: mkYesod "App" [parseRoutes| /static StaticR Static getStatic / HomeR GET ... api routes |] getHomeR :: Handler () getHomeR = do app <- getYesod let indexPath = getRootDir app &

我正在尝试使用静态文件路由、webservice api和域根目录下的主地址设置服务器。我的YesSOD应用程序如下所示:

mkYesod "App" [parseRoutes|
/static StaticR Static getStatic
/ HomeR GET
... api routes
|]
getHomeR :: Handler ()
getHomeR = do
    app <- getYesod
    let indexPath = getRootDir app </> "index.html"
    sendFile "text/html" indexPath

现在我发现了如何为静态文件提供服务以及如何处理api请求。但是我被困在
getHomeR
定义中。我只想提供一个
index.html
文件。我可以手动读取它并将其作为字符串传递。但是,有没有一种高效的内置解决方案可以为特定的html文件提供服务呢?

嗯,我问了一分钟后找到了答案(我已经搜索了20分钟)

Yesod.Handler
中有一个很好的助手,名为
sendFile
getHomeR
定义如下:

mkYesod "App" [parseRoutes|
/static StaticR Static getStatic
/ HomeR GET
... api routes
|]
getHomeR :: Handler ()
getHomeR = do
    app <- getYesod
    let indexPath = getRootDir app </> "index.html"
    sendFile "text/html" indexPath
getHomeR::Handler()
getHomeR=do

index.html
调用一些带有
的外部文件时,你知道怎么做吗?在运行时找不到这些文件。您可以设置一个包含所有静态内容(CSS、js、HTML、图像等)的目录。请参阅。您的服务器必须使用位于machinepathtostatic/subpath的文件响应urltostatic/subpath形式的get请求。在我的情况下,这些路径类似于www.mysite.com/static/where,并且提供的文件位于c:/myapppath/static我管理过的文件中。