问题标签 [haskell-wai]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 提取发布请求时的类型错误
我正在尝试使用此问题中的代码提取基本的发布请求(除了我正在使用lbsBackEnd
而不是不再存在的lbsSink
)。
该问题中的评论表明这应该可行,但我收到类型错误
这有点奇怪,因为Network.Wai.Parse文档说这Param
是 的类型同义词(ByteString, ByteString)
,据我所知,这应该有效。
关于我做错了什么的任何提示?
haskell - 在 Wai 中间件中自定义响应标头
我目前正在使用wai-middleware-static为我的服务器提供自定义页面。但是,我看到我的服务器favicon.ico
在每次页面加载时都收到了对等的请求,而且我的每一个网络字体也收到了请求,所以我决定检查响应头上的缓存设置,发现没有。
wai-middleware-static 返回一个Middleware
值,我认为这是对在每个请求上运行的中间件提供的函数的回调。有没有办法修改它以添加响应标头以告诉浏览器缓存结果?
haskell - 使用带有 defaultWebAppSettings 的 staticApp 重定向到索引
我正在使用 wai-app-static 静态包来服务一个小型网站。最初我将其称为:
世界上一切都很好。不过,我想改用 defaultWebAppSettings(因为这是一个网站)。我能够让它工作,所以如果我去http://localhost:3000/index.html
,那很好,但我还需要设置从根文件夹到索引站点(即http://localhost:3000 --> http://localhost:3000/index.html
)的重定向。
根据我在代码中看到的内容,我尝试了以下几种变体:
我能够编译和运行服务器,但我无法让重定向工作。
任何指示或想法将不胜感激!
谢谢
haskell - Is there anything like sprockets for haskell?
The Ruby library, Sprockets, allows you to set up an environment consisting of one or more load paths, and then can serve static files under those paths over HTTP.
It also will do ETags and preprocessing (for example, if you want to use CoffeeScript or Sass)
Has anyone written something like this in Haskell? (preferably using Wai?)
haskell - Yesod 使用哪个 Websockets 库?
我想知道是否有人可以解释 Haskell websocket 库之间的差异以及它们如何与 Yesod 一起工作。
我要介绍的两个主要示例是Network.Websockets 的本教程和wai websockets 包。
我一直无法为 wai 包找到一个好的示例或教程。既然yesod用的是wai,那它比单纯的网络有什么优势呢?它是用来代替 Network.Websockets 还是与 Network.Websockets 结合使用?
我看过一些例子,但我无法理解它们是如何真正融入 yesod 环境的。如果有人可以在 Yesod 中解释 websocket 与处理程序和 IO 等的关系,那就太好了。
注意:我已经看过这个问题和这个问题,但我不明白如何应用它们,因为它们实际上并没有解释 websockets 适合 Yesod 的位置。
haskell - Web Scotty:提供静态文件时找不到文件
这一定是一件非常愚蠢的事情。我刚开始玩 scotty,无法正确提供静态内容。
很简单。这就是您在几个 scotty 教程中找到的内容。但由于某种原因它不起作用。在浏览器中通过“/”访问会给我“找不到文件”的东西。如果我在浏览器中输入“/index.html” - 它可以工作。但这是错误的!我希望它可以通过“/”而不是“/index.html”访问。它忽略根目录并直接获取 html 文件。如何通过“/”根服务 index.html?周围没有太多信息,我发现一些教程指向上述示例或类似示例,但无法按预期工作。
我尝试将标题设置为“text/html”,什么不是……不走运。
haskell - Scotty:连接池作为单子阅读器
包括阅读器在内的数以万亿计的 monad 教程,当您阅读它时似乎一切都清楚了。但是当你真的需要写的时候,就另当别论了。
我从未使用过 Reader,只是在实践中从未使用过。因此,尽管我读过它,但我不知道该怎么做。
我需要在 Scotty 中实现一个简单的数据库连接池,以便每个操作都可以使用该池。池必须是“全局的”并且可以被所有操作函数访问。我读到这样做的方法是 Reader monad。如果还有其他方法请告诉我。
你能帮我看看如何正确使用阅读器吗?如果我用我自己的例子看看它是如何完成的,我可能会学得更快。
所以上面的很简单。我想在每个 Scotty 操作中使用“运行”功能来访问数据库连接池。现在,问题是如何将它包装在 Reader monad 中以使其可供所有函数访问?我知道对于所有 Scotty 操作函数,“池”变量必须“像全局”。
谢谢你。
更新
我正在使用完整的代码片段更新问题。我将“池”变量传递到函数链的位置。如果有人可以展示如何更改它以使用 monad Reader 请。我不明白该怎么做。
谢谢。
更新 2
我尝试按照下面建议的方式进行操作,但它不起作用。如果有人有任何想法,请。编译错误列表太长了,我什至不知道从哪里开始......
更新 3
感谢cdk提供的想法,并感谢Ivan Meredith提供 scottyT 的建议。这个问题也有帮助:如何将 Reader monad 添加到 Scotty 的 monad 这是编译的版本。我希望它可以帮助某人并节省一些时间。
haskell - 如何使用 Scotty 设置 wai-handler-devel 以自动重新加载代码?
我一直在使用Scotty Web 框架,并尝试使其与wai-handler-devel一起使用以启用代码重新加载。这是一个示例应用程序
这里的问题是wai-handler-devel
期望获得一个(Application -> IO ()) -> IO ()
使事情正常进行的函数,但在这种情况下,我只有ScottyM ()
and IO ()
。Web.Scotty
和包中有几个函数Web.Scotty.Trans
,即以下
scottyApp :: ScottyM () -> IO Application
这可以把我们handler
变成IO Network.Wai.Application
,它更接近wai-handler-devel
预期,但不完全是。
也scottyAppT ::
省略了类型签名......但在这种情况下,我什至不确定如何阅读类型签名。
我发现有一些wai-handler-devel
仅在 WAI 应用程序上使用的示例,但我只是不知道如何将 Scotty 应用程序转换为具有所需签名的 WAI 应用程序。
我还想问一下,既然wai-handler-devel
不赞成使用 ,yesod-bin
那么即使对于像这样的简单 WAI/Scotty 应用程序,它是否应该替换它,或者 yesod-bin 是否仅适用于 yesod 应用程序?
haskell - 关于 scotty Haskell Web 框架的简单问题
考虑最简单的 scotty 应用程序:
我将这段代码放入app.hs
并用 GHC 编译。我用./app
. 简单的。
当人们访问该网站时,究竟会发生什么?只有一个
./app
在运行。每当每个用户触发一行时,是否会在同一个应用程序中创建一个新线程get "/:word" $ do
?可以存在多少这样的线程?千?万?运行
./app
后显示消息Setting phasers to stun... (port 3000) (ctrl-c to quit)
。但它没有显示更多。它不输出传入的网络请求。我怎样才能让它做到这一点?这对于记录目的很有用。
haskell - 如何在使用 Scotty / wai 的代理后面记录真实 IP 地址
这是我的 scotty 应用程序,请注意我如何将请求记录到控制台:
我的 scotty 应用程序使用代理机制在 nginx 后面运行。这会导致 scotty 应用程序像这样记录:
我希望记录真实 IP 地址。
我在我的 Node.js/Express 应用程序中遇到了同样的问题,我在这里解决了这个问题:
如何在 Scotty 中解决这个问题?