问题标签 [scotty]

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.

0 投票
1 回答
485 浏览

haskell - 每个处理程序阅读器的 Scotty monad 转换器

在问题Web,Scotty:connection pool as monad reader中,展示了如何使用ScottyTReadermonad 嵌入堆栈以访问静态配置(在这种情况下为连接池)。

我有一个类似的问题,但更简单——或者至少我是这么认为的……</p>

我想将 a 添加Reader到单个处理程序(即 a ActionT),而不是整个应用程序。

我从上面的问题开始修改程序,但我不知道如何将 anActionT Text (ReaderT String IO)变成ActionT Text IO需要的处理程序。在摸索并尝试使用打字孔希望了解如何构建它之后,我现在不得不放弃并寻求帮助。我真的觉得这应该很简单,但无法弄清楚如何做到这一点。

这是程序,我卡住的行突出显示:

0 投票
1 回答
685 浏览

haskell - Haskell Scotty Webserver 发送文本响应

我收到一个 GET 请求并想发送一条短信作为对它的响应。我有以下代码,但收到以下错误

我尝试运行服务器时遇到的错误是

0 投票
1 回答
167 浏览

haskell - 在 Haskell 中动态导入模块

我正在构建一个基于 Scotty 的应用程序,并且正在尝试导入和添加目录中包含的动态中间件列表。

我不想硬编码我的中间件列表 - 但到目前为止,我正在使用一个Index.hs公开所有目录中间件的。

假设我有一个Main.hs

然后在Controllers/Index.hs

每个都Controllers/*.hs包含一个中间件。

摆脱的最好方法是Controllers/Index.hs什么?有没有办法从目录中导入所有模块并获取我可以使用的列表?

0 投票
1 回答
127 浏览

haskell - 如何在 Scotty 或 Yesod 中打开单独的套接字连接?

我正在构建一个必须连接到 IRC 网络(打开套接字)并托管 Web 应用程序的应用程序。一些数据应该在 IRC 部分和 Http 部分之间共享。在 Haskell 中实现这种并发的最佳方法是什么?应该Control.Monad.STM用这个来实现吗?这是 web 框架也应该支持的东西,还是可以在启动 Scotty 之前分叉?

0 投票
2 回答
820 浏览

haskell - 在 Scotty / Haskell 中捕获异常

我刚刚开始学习 Haskell,并且一直坚持如何在 Scotty 中处理异常。

我有下面的基本功能。它获取 JSON POST,将其转换为 Haskell 数据记录,从配置读取器获取 postgres 连接池,然后将记录插入数据库。

此函数编译正常,但是当我将 UniqueViolation 更改为返回文本时,它无法编译。

给出的编译错误是:

catchViolation来自Database.PostgreSQL.Simple.Errors并具有以下签名:

我知道问题的一部分是它从 PgSQL.execute 获取 IO Int64,但从捕手获取 ActionT 但不确定如何解决类型或更惯用的方法。

0 投票
1 回答
178 浏览

haskell - 将嵌套子目录与 Scotty RoutePattern 匹配

我正在使用我的 Scotty 网络服务器提供一些静态文件。它们也可以位于子目录中。我目前的方法如下所示:

是否有可能仅使用一种模式来匹配具有不同目录嵌套深度的路径?

0 投票
3 回答
551 浏览

haskell - 如何限制 WAI 中请求正文和标头的大小?

我正在使用Scotty开发一个应用程序,当然还有WAI。我希望能够限制请求的大小,包括正文长度和标题。我怎样才能做到这一点?是否可以使用普通的 WAI 中间件来做到这一点?

0 投票
1 回答
160 浏览

haskell - 在 Scotty 编译时动态添加路由

是否可以使用 Template Haskell 或任何其他方式在编译时通过配置文件动态添加路由。

Scotty 有一个函数addRoute但我想动态使用它。

例子

我想遍历 sampleRoutes 数组并在编译时定义路由和响应。

0 投票
1 回答
363 浏览

haskell - 使用 Scotty 的网络 I/O 吞吐量出乎意料地低

我尝试对 Scotty 进行基准测试以测试网络 I/O 效率和整体吞吐量。

为此,我设置了两个用 Haskell 编写的本地服务器。一个什么都不做,只是充当 API 的一种。

相同的代码是

我写了另一个服务器,它调用这个服务器并返回响应。

在这两个服务器运行的情况下,我执行了wrk基准测试并获得了极高的吞吐量。

虽然这明显高于 Phoenix 等其他 Web 服务器,但我意识到这没有任何意义,因为大多数响应是由于文件描述符耗尽而发生的 500 错误。

我检查了非常低的限制。

我将这些限制增加到

我再次运行 wrk,这一次显然吞吐量已大大降低。

尽管 500 个错误的数量减少了,但它们并没有被消除。我对Gin和 Phoenix 进行了基准测试,它们比Scotty不给出任何 500 个响应的情况要好得多。

我错过了什么拼图?我怀疑有一个我无法调试的问题。

我知道http-conduit与这些错误有很大关系,http-client图书馆在后台使用它,这与Scotty.

0 投票
1 回答
621 浏览

json - 将 BSON 转换为 JSON 并作为 API 响应发送 Haskell

我正在开发我的第一个 Haskell Web 应用程序,并且无法将 BSON 文档转换为 JSON,然后将其作为 API 响应发送。我目前正在使用该AesonBson包将我的 BSON 转换为 Aeson Object,但无法弄清楚如何将该 AesonObject作为 JSON API 响应发送。

这是我的服务器中路由处理程序的示例:

这些看起来应该很简单 -getAllDocuments返回IO [Document],然后我映射aesonfy到我的文档列表,然后尝试将它们作为 JSON 服务器响应返回。

问题是我不断收到此No instance for ToJSON错误:

知道我缺少什么吗?看起来aesonify返回一个 Aeson Object......那不应该是一个实例ToJSON吗?任何帮助将不胜感激,我已经在这个上旋转了一段时间了。我试过将 Aeson 的object功能放在不同的地方,手动添加文档作为 的实例ToJSON,但实在想不通。